- public String() 创建一个空白字符串对象,不含任何内容
- public String(char[] chs) 根据字符数组的内容,来创建字符串对象
- public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
- String s = "abc" 直接赋值的方法创建字符串对象,内容就是 abc
- 推荐使用直接赋值的方法创建字符串对象
- 通过 new 创建的字符串对象(前三种),每一次 new 都会申请一个内存空间,即使内容相同,但地址是不同的
- 通过直接赋值的方法创建字符串对象,只要字符序列完全相同(顺序,大小写都相同),无论在程序中出现几次,都会只创建一个对象,用一个内存地址
public class HelloWorld {
public static void main(String[] args) {
char[] chs = {'a', 'b', 'c'};
byte[] bys = {97, 98, 99};
String s1 = new String(chs);
String s2 = new String(chs);
String s3 = new String(bys);
String s4 = "abc";
String s5 = "abc";
System.out.println(s1 == s2);
System.out.println(s4 == s5);
System.out.println(s1 == s4);
System.out.println("s1:" + s1);
System.out.println("s3:" + s3);
System.out.println("s4:" + s4);
System.out.println(s1.equals(s3));
System.out.println(s4.equals(s5));
}
}
//输出:
//false
//true
//false
//s1:abc
//s3:abc
//s4:abc
//true
//true
String 字符串的比较
不能直接用 == 进行比较,因为对于引用类型,该符号比较的是地址值是否相同,无法比较内容是否相同
那么对于字符串比较内容是否相同,是通过一个方法来实现 equals()
String 字符串常用方法- s.length()
- s.charAt()
- s.equals()
//str.length() 字符串的长度
//str.charAt(index) 遍历字符串的每个字符,注意不能直接用索引,是错的,和数组不同
//char[] chs = {1, 2, 3}
//String s = new String(chs)
//注意:chs是字符数组,s是字符串对象
//str.equals() 比较两个字符串是否内容相同
StringBuilder
StringBuilder 是一个可变的字符串,我们可以把它看作是一个容器
StringBuilder 和 String 的区别:
- StringBuilder :内容是可变的
- String :内容是不可变的
如果想对字符串进行拼接和反转,可以先转为 StringBuilder 类型,在调用方法,比较简单,再转回原来 String 类型
- sb.append(任意类型) :添加数据并返回对象本身
- sb.reverse()
public class HelloWorld {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = sb.append("hello"); //返回对象本身
System.out.println("sb:" + sb);
System.out.println("sb2:" + sb2);
System.out.println(sb == sb2);
}
}
//输出:
//hello
//hello
//true
public class HelloWorld {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append("world");
sb.append("java");
sb.append(100);
System.out.println("sb:" + sb);
}
}
//输出:
//helloworldjava100
//链式调用:
public class HelloWorld {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("hello").append("world").append("java").append(100);
System.out.println("sb:" + sb);
sb.reverse();
System.out.println("sb:" + sb);
}
}
//输出:
//sb:helloworldjava100
//sb:001avajdlrowolleh
两种类型相互转化
- String s = sb.toString() :StringBuilder 转换为 String
- StringBuilder sb = new StringBuilder(s) : 通过构造方法将String 转换为StringBuilder



