String类

#Java

String类

java.lang是核心包,不需要额外导入

java程序中,所有用双引号的字符串,都是String类的对象。

字符串不可变,它们的值在创建后不能更改

常见的构造器

String类比较特殊,打印其对象名的时候,不会出现内存地址。

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

以“ ”方式创建的字符串,只要字符串相同,多次创建,内存中只有一个。存储在字符串常量池中(从jdk1.7后,字符串常量池放在了堆内存中

new创建的方式,多次创建,不管字符串是否相同,内存中有多份,指向不同的地址。

在字符串之间使用+号拼接,系统底层会自动创建一个StringBuilder对象,然后再调用其append()方法完成拼接,拼接后再调用toString()方法转换为String类型

String str1 = "abc";
String str2 = "ab";
String str3 = str2 + "c";
System.out.println(str1 == str3);  //输出false str3指向的堆内存中开辟的空间,不是字符串常量池
String s4 = "a" + "b" + "c";
System.out.println(str1 == s4);   //输出的是true,Java常量优化,编译时将"a" + "b" + "c"变成"abc"

字符串比较内容

equals(), equalsIgnoreCase()

遍历字符串

public char charAt(int index): 返回指定索引的char值。

public int length(): 返回字符串的长度

方法二:public char[] toCharArray(): 将当前字符串拆分为字符数组返回

字符串的截取

String substring(int beginIndex);

String substring(int beginIndex, int endIndex);

字符串的替换

String replace(CharSequence target, CharSequence replacement);

String s = replace("TMD", "***"); //将TMD替换为***

切割字符串

String[] split(String regex): 根据传入的字符串作为规则进行切割,将切割后的内容存入字符串数组中