07_常用的API

一、API

1.1 概述-帮助文档的使用

  • 什么是API

    API,应用程序编程接口

  • Java中的API

    指的就是JDK中提供的各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用

  • 如何使用API帮助文档

    • 打开帮助文档
    • 找到索引选项卡中的输入框
    • 比如在输入框中输入Random
    • 看类在哪个包下
    • 看类的描述
    • 看构造方法
    • 看成员方法

1.2 键盘录入字符串

  • Scanner

    • next():遇到了空格,就不再录入数据了,结束标记:空格tab
    • nextLine():可以将数据完整的接收过来,结束标记:回车换行符
  • 代码实现

    ScannerDemo.java

    package com.it.test01;
    
    import java.util.Scanner;
    
    public class ScannerDemo {
        public static void main(String[] args) {
            // 创建Scanner对象
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入:");
            // 调用nextLine方法接收字符串
            String s = sc.nextLine();
            System.out.println(s);
        }
    }
    

    ScannerDemo2.java

    package com.it.test01;
    
    import java.util.Scanner;
    
    public class ScannerDemo2 {
        public static void main(String[] args) {
            /*
            * nextInt和nextLine方法配合使用的时候, nextLine方法就没有键盘录入的机会了
            * 建议: 今后键盘录入数据的时候, 如果是字符串和整数一起接受, 建议使用next方法接受字符串.
            * */
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入整数:");
            int num = sc.nextInt();
            System.out.println("请输入字符串:");
    //        String s = sc.nextLine();
            String s = sc.next();
            System.out.println(num);
            System.out.println(s);
        }
    }
    

二、String类

2.1 概述

  1. String类在java.lang包下,所以使用的时候不需要导包
  2. String类代表字符串,java程序中的所有字符串(例如"abc")都被实现为此类的实例,也就是说java程序中所有的双引号字符串,都是String类的对象
  3. 字符串不可变,它们的值在创建后不能被修改

2.2 构造方法

  • 常用的构造方法

  • 示例代码

    package com.it.test02;
    
    public class StringDemo {
        public static void main(String[] args) {
            // 创建一个空白字符串对象,不含有任何内容
            String str = new String();
            System.out.println(str);
    
            // 根据字符数组的内容,来创建字符串对象
            char[] chs = {'a','b','c'};
            String s2 = new String(chs);
            System.out.println(s2);
    
            // 根据传入的字符串内容,来创建字符串对象
            String s3 = new String("123");
            System.out.println(s3);
            
            //直接赋值的方式创建字符串对象
            String s4 = "efg";
            System.out.println(s4);
        }
    }
    

2.3 创建字符串对象的区别对比

  • 通过构造方法创建

    通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同

  • 直接赋值方式创建

    以 "" 方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护

2.4 字符串的比较

  • 比较

    • ==比较基本数据类型,比较的是具体的值
    • ==比较引用数据类型,比较的是对象地址值
    • String类,equals方法,比较的是2个字符串内容是否相同,区分大小写
  • 代码

    package com.it.test03;
    
    public class StringDemo2 {
        public static void main(String[] args) {
            String str = "abc";
            String str2 = "ABC";
            String str3 = "abc";
    
            // equals方法比较字符串内容,区分大小写
            System.out.println(str.equals(str2)); // false
            System.out.println(str.equals(str3)); // true
    
            // equalsIgnoreCase方法比较字符串内容,忽略大小写
            System.out.println(str.equalsIgnoreCase(str2)); // true
        }
    }
    

2.5 用户登录案例

  • 需求

    已知用户名和密码,请用程序实现模拟用户登录,总共给3次机会,登录之后,给出相应的提示

  • 实现步骤

    1.已知用户名和密码,定义2个字符串表示即可

    2.键盘录入要登录的用户和密码,用Scanner实现

    3.拿键盘录入的用户名、密码和已知的用户名,密码进行比较,给出相应的提示

    4.字符串的内容比较,用equals方法实现

    5.用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环

  • 代码实现

    package com.it.test03;
    
    import java.util.Scanner;
    
    public class StringDemo3 {
        public static void main(String[] args) {
            // 已知用户名和密码,定义2个字符串表示即可
            String username = "admin";
            String password = "123456";
            // 定义Scanner对象
            Scanner sc = new Scanner(System.in);
            // 用循环实现多次机会,这里的次数明确,采用for循环实现
            for (int i = 1; i <= 3; i++) {
                System.out.println("请输入用户名:");
                String usernameTemp = sc.nextLine();
                System.out.println("请输入密码:");
                String passwordTemp = sc.nextLine();
                // 拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示
                if(username.equals(usernameTemp) && password.equals(passwordTemp)){
                    System.out.println("登录成功");
                    break;
                }else{
                    if(i == 3){
                        System.out.println("您的登录次数已达到今日上限,清明天再来");
                    }else{
                        System.out.println("输入有误,您还剩余:" + (3 - i + "次机会"));
                    }
                }
            }
        }
    }
    

2.6 遍历字符串案例

  • 案例需求

    键盘录入一个字符串,使用程序实现在控制台遍历该字符串

  • 实现步骤

    1.键盘录入一个字符串,用Scanner实现

    2.遍历字符串,首先要能够获取到字符串中的每一个字符,charAt方法,返回指定索引处的char值,字符串的索引也是从0开始的

    3.遍历字符串,其次要能够获取到字符串的长度,length,返回此字符串的长度

    4.遍历打印

  • 代码实现

    package com.it.test03;
    
    import java.util.Scanner;
    
    public class StringDemo4 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入:");
            String str = sc.nextLine();
            for(int i = 0; i < str.length(); i ++){
                char c = str.charAt(i);
                System.out.println(c);
            }
        }
    }
    

2.7 统计字符次数案例

  • 案例需求

    键盘录入一个字符串,使用程序实现在控制台遍历该字符串

  • 实现步骤

    1. 键盘录入一个字符串,用 Scanner 实现
    2. 将字符串拆分为字符数组 , public char[] toCharArray( ):将当前字符串拆分为字符数组并返回
    3. 遍历字符数
  • 代码实现

    package com.it.test03;
    
    import java.util.Scanner;
    
    public class StringDemo5 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入:");
            String str = sc.nextLine();
            char[] chars = str.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                System.out.println(chars[i]);
            }
        }
    }
    

2.8 手机号屏蔽

  • 案例需求

    以字符串的形式从键盘接收一个手机号,将中间4位号码屏蔽,最终效果:156****1234

  • 实现步骤

    1. 键盘录入一个手机号,用Scanner实现
    2. 截取字符串前3位
    3. 截取字符串后4位
    4. 将截取后的字符串,中间加上****进行拼接,输入结果
  • 代码实现

    package com.it.test03;
    
    import java.util.Scanner;
    
    public class StringDemo6 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入手机号:");
            String phone = sc.nextLine();
            String start = phone.substring(0, 3);
            String end = phone.substring(7);
            System.out.println(start + "****" + end);
        }
    }
    

2.9 敏感词替换

  • 案例需求

    键盘录入一个字符串,如果字符串中包含(TMD),则使用***替换

  • 实现步骤

    1. 键盘录入一个字符串,用Scanner实现
    2. 替换敏感词,replace方法,将当前字符串中的目标内容,使用新字符串替换,返回新的字符串
    3. 输出结果
  • 代码实现

    package com.it.test03;
    
    import java.util.Scanner;
    
    public class StringDemo7 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入内容:");
            String str = sc.nextLine();
            String newStr = str.replace("TMD", "***");
            System.out.println(newStr);
        }
    }
    

2.10 切割字符串

  • 案例需求

    以字符串的形式从键盘录入学生信息,例如"张三,23",从该字符串中切割出有效数据,封装Student学生对象

  • 实现步骤

    1. 编写Student类,用于封装数据
    2. 键盘录入一个字符串,用Scanner实现
    3. 根据逗号切割字符串,得到(张三)(23),split方法,根据传入的字符串作为规则进行切割,将切割后的内容存入字符串数组中,并将字符串数组返回
    4. 从得到的字符串数组中取出元素内容,通过Student类的有参构造方法封装为对象
    5. 调用对象的get方法,取出数据并打印
  • 代码实现

    Student.java

    package com.it.test03;
    
    public class Student {
        private String name;
        private int age;
    
        public Student() {
        }
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    

    StringDemo8.java

    package com.it.test03;
    
    import java.util.Scanner;
    
    public class StringDemo8 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生信息");
            String str = sc.nextLine();
            String[] sArr = str.split(",");
            Student stu = new Student(sArr[0], Integer.parseInt(sArr[1]));
            System.out.println(stu.getName() + "-" + stu.getAge());
        }
    }
    

2.11 String方法小结

  • equals:比较字符串的内容,严格区分大小写
  • equalslgnoreCase:比较字符串的内容,忽略大小写
  • length:返回字符串的长度
  • charAt:返回指定索引处的char
  • toCharArray:将字符串拆分为字符数组后返回
  • substring:从传入的索引处截取,截取到末尾,得到新的字符串
  • replace:使用新值,将字符串中的旧值替换,得到新的字符串
  • split:根据传入的规格切割字符串,得到字符串数组

三、StringBuilder类

3.1 概述

StringBuilder类是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBuilder对象中的内容是可变的

3.2 StringBuilder类和String类的区别

  1. String类内容是不可变的
  2. StringBuilder类内容是可变的

3.3 StringBuilder类的构造方法

  • 常用的构造方法

    • StringBuilder():创建一个空白可变字符串对象
    • StringBuilder("abc"):根据字符串的内容,来创建可变字符串对象
  • 示例代码

    package com.it.test04;
    
    public class StringBuilderDemo {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            System.out.println(sb);
            System.out.println(sb.length()); // 0
    
            StringBuilder sb2 = new StringBuilder("hello");
            System.out.println(sb2); // hello
            System.out.println(sb2.length()); // 5
        }
    }
    

3.4 常用的成员方法

  • 常用的成员方法

    • append(任意类型):添加数据,并返回对象本身
    • reverse():返回相反的字符序列
  • 示例代码

    package com.it.test04;
    
    public class StringBuilderDemo2 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("hello").append("world").append(100);
            System.out.println(sb); // helloworld100
    
            sb.reverse();
            System.out.println(sb); // 001dlrowolleh
        }
    }
    

3.5 StringBuilder和String相互转换

  • StringBuilderString

    通过toString()就可以

  • StringStringBuilder

    通过构造方法StringBuilder(String str)就可以

  • 代码

    package com.it.test04;
    
    public class StringBuilderDemo3 {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            sb.append("hello").append(" world");
            String str = sb.toString();
            System.out.println(str); // hello world
    
            String str2 = "hi world";
            StringBuilder sb2 = new StringBuilder(str2);
            System.out.println(sb2); // hi world
        }
    }
    

3.6 StringBuilder拼接字符串案例

  • 需求:

    定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果,例如:数组为int[] arr = {1,2,3},执行方法后的输入结果为[1,2,3]

  • 实现步骤

    1. 定义个int类型的数组,用静态初始化完成数组元素的初始化
    2. 定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回,返回值类型是String,参数列表int[] arr
    3. 在方法中用StringBuilder按照要求进行拼接,并把结果转成String返回
    4. 调用方法,用一个变量接收结果
    5. 输出结果
  • 代码

    package com.it.test04;
    
    public class StringBuilderDemo5 {
        public static void main(String[] args) {
            int[] arr = {1, 2, 3, 4, 5};
            String str = arrayToString(arr);
            System.out.println(str); // [1, 2, 3, 4, 5]
        }
        
        public static String  arrayToString(int[] arr){
            StringBuilder sb = new StringBuilder();
            sb.append("[");
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]);
                if (i != arr.length - 1) {
                    sb.append(", ");
                }
            }
            sb.append("]");
            return sb.toString();
        }
    }
    
posted @ 2023-07-10 11:22  徐林俊  阅读(5)  评论(0编辑  收藏  举报