Java学习的第八天
什么是API
- API(Application Programming Interface):应用程序编辑接口
- Java中的API:
指的就是JDK中提供各种功能的Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类是如何使用的即可
String类
- Stirng类代表字符串,Java中所有字符串的文字(例如“abc”)都被实现为此类的实例。
- String类的特点
- 字符串可变,但是它的值在创建之后是不可以改变的
- 虽然Stirng的值是不能改变的,但是他们可以被共享
- 字符串效果上相当于char [](字符数组),但是底层原理是byte[](字节数组)
String类的构造方法
- 常用的构造方法、
方法名 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(char []chs) | 根据字符数组的内容,来创建一个字符串对象、 |
public String(byte []bys) | 根据字节数组的内容,来创建字符串对象 |
String s=“abc” | 通过直接赋值的方式来货初始化字符串对象,内容就是abc |
- 字符串的比较
- ==号的作用
- 比较基本数据类型:比较的是具体的值
- 比较引用数据类型:比较的是对象的地址值
- equals方法的作用
方法名 | 作用 |
public boolean equals(String s) | 比较两个字符串的内容是否相同,区分大小写 |
- 注意:是拿字符串去和s比较,无论是数组的长度还是数组的内容,区分大小写
public class StringDemo02 {
public static void main(String[] args) {
//构造方法的方式得到对象
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接赋值的方式得到对象
String s3 = "abc";
String s4 = "abc";
//比较字符串对象地址是否相同
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println("--------");
//比较字符串内容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
- 一些方法的运用
方法名 | 说明 |
public boolean equals(Object anObject) | 比较字符串的大小,严格区分大小写 |
public boolean equalslgnore(String anotherString) | 比较字符串的内容,忽略大小写 |
public int length() | 返回字符串的长度 |
public char charAt(int index) | 返回指定索引处的char值 |
public char[] toCharArray() | 将字符串拆分成字符数组后返回 |
public String substring(int beginIndex,int endIndex) | 根据开始和结束索引进行截取(包含头,不包含尾) |
public String substring(int beginIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串 |
public String replace(CharSequence target,CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public String[] split(String regex) | 根据传入的规则切割字符串,得到字符数组 |
#切割字符串的实例:用上述方法中的substring()
import java.util.Scanner;
public class Test5 {
/*
需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽
最终效果为:138****7862
思路:
1. 键盘录入一个字符串,用 Scanner 实现
2. 截取字符串前三位
3. 截取字符串后四位
4. 将截取后的两个字符串,中间加上****进行拼接,输出结果
*/
public static void main(String[] args) {
// 1. 键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入手机号:");
String telString = sc.nextLine();
// 2. 截取字符串前三位
String start = telString.substring(0,3);
// 3. 截取字符串后四位
String end = telString.substring(7);
// 4. 将截取后的两个字符串,中间加上****进行拼接,输出结果
System.out.println(start + "****" + end);
}
}
#字符串的替换的方式,使用上述方法的replace()
import java.util.Scanner;
public class Test6 {
/*
需求:键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换
思路:
1. 键盘录入一个字符串,用 Scanner 实现
2. 替换敏感词
String replace(CharSequence target, CharSequence replacement)
将当前字符串中的target内容,使用replacement进行替换,返回新的字符串
3. 输出结果
*/
public static void main(String[] args) {
// 1. 键盘录入一个字符串,用 Scanner 实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
// 2. 替换敏感词
String result = s.replace("TMD","***");
// 3. 输出结果
System.out.println(result);
}
}
#切割字符串的方法:用上述方法split(String regex)
public class study2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一组数据");
String s=sc.nextLine();
String []str=s.split(" ");
int []arr=new int[str.length];
for (int i = 0; i < str.length; i++) {
Integer ins=Integer.valueOf(str[i]);#将字符数组内部的元素转换成int类型
arr[i]=ins;
}
System.out.println(Arrays.toString(str));
}
}
StringBuilder类
- 概述:StringBuilder类,是一个可变的字符串类,我们可以把它看成一个容器,这里的可变指的是StringBuilder对象中的内容是可以改变的
String类 | StringBuilder类 |
内容是不可以更变的 | 内容是可以改变的 |
- 常用的构造方法
方法名 | 说明 |
public StringBuilder() | 创建一个空白可变的字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串的对象 |
public class StringBuilderDemo01 {
public static void main(String[] args) {
//public StringBuilder():创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
System.out.println("sb:" + sb);
System.out.println("sb.length():" + sb.length());
//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:" + sb2);
System.out.println("sb2.length():" + sb2.length());
}
}
- 注意:
- 一定得在创建时分清楚自己到底需要些什么,不要一股脑的乱创建String类和StringBuilder类
- 常用的成员方法
- 添加和反转的方法
方法名 | 说明 |
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
- 代码:
public class StringBuilder1 {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder();
//public StringBuilder append(任意类型):添加数据,并返回对象本身
// StringBuilder sb2 = sb.append("hello");
//
// System.out.println("sb:" + sb);
// System.out.println("sb2:" + sb2);
// System.out.println(sb == sb2);
// sb.append("hello");
// sb.append("world");
// sb.append("java");
// sb.append(100);
//链式编程
sb.append("hello").append("world").append("java").append(100);#字符串的添加
System.out.println("sb:" + sb);
//public StringBuilder reverse():返回相反的字符序列
sb.reverse();#字符串的反转
System.out.println("sb:" + sb);
}
}