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 概述
String
类在java.lang
包下,所以使用的时候不需要导包String
类代表字符串,java
程序中的所有字符串(例如"abc")都被实现为此类的实例,也就是说java
程序中所有的双引号字符串,都是String
类的对象- 字符串不可变,它们的值在创建后不能被修改
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 统计字符次数案例
-
案例需求
键盘录入一个字符串,使用程序实现在控制台遍历该字符串
-
实现步骤
- 键盘录入一个字符串,用 Scanner 实现
- 将字符串拆分为字符数组 , public char[] toCharArray( ):将当前字符串拆分为字符数组并返回
- 遍历字符数
-
代码实现
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
-
实现步骤
- 键盘录入一个手机号,用
Scanner
实现 - 截取字符串前3位
- 截取字符串后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
),则使用***替换 -
实现步骤
- 键盘录入一个字符串,用
Scanner
实现 - 替换敏感词,
replace
方法,将当前字符串中的目标内容,使用新字符串替换,返回新的字符串 - 输出结果
- 键盘录入一个字符串,用
-
代码实现
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
学生对象 -
实现步骤
- 编写
Student
类,用于封装数据 - 键盘录入一个字符串,用
Scanner
实现 - 根据逗号切割字符串,得到(张三)(23),
split
方法,根据传入的字符串作为规则进行切割,将切割后的内容存入字符串数组中,并将字符串数组返回 - 从得到的字符串数组中取出元素内容,通过
Student
类的有参构造方法封装为对象 - 调用对象的
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类的区别
String
类内容是不可变的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相互转换
-
StringBuilder
转String
通过
toString()
就可以 -
String
转StringBuilder
通过构造方法
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]
-
实现步骤
- 定义个
int
类型的数组,用静态初始化完成数组元素的初始化 - 定义一个方法,用于把
int
数组中的数据按照指定格式拼接成一个字符串返回,返回值类型是String
,参数列表int[] arr
- 在方法中用
StringBuilder
按照要求进行拼接,并把结果转成String
返回 - 调用方法,用一个变量接收结果
- 输出结果
- 定义个
-
代码
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(); } }