一、String:
Java中的String API是一组用于操作字符串的方法集合。Java中的字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能修改它的值。因此,String API提供了一些方便的方法,让您能够对字符串进行各种操作,例如查找、替换、截取、转换大小写等。
String不可变,如果修改那就定义一个新的String来取代原有的,与数组类似
1.equals(Object):比较当前字符串和指定对象是否相等
equalsIgnoreCase(String):比较当前字符串和指定字符串是否相等,忽略大小写
String str1 = "爱吃萝北", str2 = "不爱吃萝北";
int a = 1;
if(str1.equals(str2)){
System.out.printf("离了%d一个大谱", a);
}
2.length():获取当前字符串的长度
3.endsWith():检查当前字符串是否以指定的字符串结尾
String str1 = "Hello, world!";
boolean result1 = str1.endsWith("world!"); // 返回 true
String str2 = "Hello, universe!";
boolean result2 = str2.endsWith("world!"); // 返回 false
4.startsWith():检查当前字符串是否以指定的字符串开头(使用形式与上面类似)
5.contains():判断当前字符串是否包含指定的字符序列
toLowerCase():将当前字符串中的所有字符转换为小写字母
toUpperCase():将当前字符串中的所有字符转换为大写字母
String str = "Hello, world!";
boolean result = str.contains("world"); // 返回 true
//需要注意的是,contains()方法区分大小写,如果要忽略大小写,可以先将字符
//串转换为小写或大写,再调用contains()方法。
boolean result = str.toLowerCase().contains("WORLD".toLowerCase()); // 返回 true
7.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
作用:把一个数组中某一段字节数据放到另一个数组中
src: 源数组 | srcPos: 源数组要复制的起始位置 |
dest: 目的数组 | destPos: 目的数组放置的起始位置 |
length:复制的长度 | 注:起始位置是下标加一 |
8.Arrays.copyOf():复制指定的数组,截断或填充,以使副本具有指定的长度。
String[] array1 = {"apple", "banana", "cherry", "date"};
String[] array2 = Arrays.copyOf(array1, 3); //将数组array1的前3段赋值给新的数组array2
重载Arrays.copyOf()的方法,可以将原始数组的一部分复制到一个新的数组中:
String[] array1 = {"apple", "banana", "cherry", "date"};
String[] array2 = Arrays.copyOf(array1, 2, 4); //将array1中第2到第4个元素复制到array2;
9.split():用于将一个字符串分割成子字符串数组
String str = "apple,banana,cherry,date";
String[] array = str.split(","); //将str以逗号分割开并将每段存放到array数组中;
重载split()方法,可以指定分割后的长度:
String str = "apple,banana,,cherry,date";
String[] array = str.split(",", 3); //分割后返回一个包含3个元素的数组array
10.Integer.parseInt()将字符串转换成一个整数类型
11.charAt(int index):返回指定索引处的字符
//挑出姓氏首字母在T-Z之间的人员
System.out.println();
System.out.println("姓氏首字母在T-Z的人有:");
for(String i : arr) {
String arr2[] = i.split("-");
char a = arr2[0].charAt(0); //charAt(index)将arr2[0]中第一个字符转换为char类型
if(a<='Z'&&a>='T') {
System.out.print(arr2[1]+" ");
}
}
12.substring(int beginIndex):返回从指定索引开始到字符串末尾的子字符串
substring(int beginIndex, int end Index):返回从指定的开始索引到指定的结束索引之间的子字符串
13.replace(char oldChar, char newChar):将字符串中的旧字符替换为新字符
14.trim():去除字符串前后的空格
15.isEmpty():判断是否为空,返回true/false
16.getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):
将此字符串中的字符复制到目标字符数组中
String str = "Hello, World!";
char[] charArray = new char[5];
str.getChars(0, 5, charArray, 0);
//srcBegin和srcEnd表示要复制的字符在字符串中的起始位置和结束位置
//dst表示要复制到的目标字符数组,dstBegin表示复制的起始位置
System.out.println(charArray);
17.Arrays.toString():返回指定数组的内容的字符串表示形式。
String fruit[] = getTypeOut("水果"); //直接打印fruit数组只能打印出他在内存中的地址
System.out.println("分别是"+Arrays.toString(fruit));
//因此需要Arrays.toString()方法来将fruit数组转化为字符串输出
18.Doubel.parseDouble():字符串转为double类型
二、StringBuffer
一些如length/indexof/equals等方法与String中的类似,不做列出 | |
append(Object o) | 将某种类型(int/double/char/float..)的参数转为字符串添加到序列中 |
delete(int start, int end) | 删除此序列的子字符串中的字符。 |
insert(int offset, Object o) | 在此序列中插入某种类型参数的字符串表示形式。 |
reverse() | 反转字符串 |
三、StringBuilder
四、String、StringBuffer、StringBulider之间的联系与区别
相同点: | String、StringBuffer和StringBuilder都是用于处理字符串的类,可以进行字符串操作,如拼接、替换等。 |
不同点: | |
1.可变性:String是不可变的,每次修改都会生成一个新的对象,StringBuffer和StringBuilder是可变的,可以修改原对象。 | |
2.线程安全:String是线程安全的,因为String是不可变的,不需要考虑线程安全问题,而StringBuffer是线程安全的,因为它的所有公共方法都是synchronized修饰的,而StringBuilder是非线程安全的,但执行效率更高。 | |
3.性能:由于String是不可变的,每次修改都会生成一个新的对象,因此在频繁修改字符串时,使用String会导致性能下降。StringBuffer和StringBuilder是可变的,可以直接修改原字符串,因此在频繁修改字符串时,使用它们会提高性能。 |
// String
String str = "hello";
str = str + " world"; // 创建了新的String对象
// StringBuffer
StringBuffer sb = new StringBuffer("hello");
sb.append(" world"); // 直接修改原对象,不会创建新对象
// StringBuilder
StringBuilder sbd = new StringBuilder("hello");
sbd.append(" world"); // 直接修改原对象,不会创建新对象