02.Java-StringAPI-23/04/19&StringBuffer、StringBulider-05/10

Java中的String是不可变对象,提供了丰富的API进行操作,如equals(),length(),startsWith()等。StringBuffer和StringBuilder用于可变字符串,适用于频繁修改的情况,其中StringBuffer是线程安全的。文章介绍了这些类的主要方法和使用场景。
摘要由CSDN通过智能技术生成

一、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"); // 直接修改原对象,不会创建新对象
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值