String的不变性
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。 一旦一个字符串在内存中创建,则这个字符串将不可改变。
如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。
每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法。
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
//多次出现的字符常量,java编译程序只创建一个,所以返回true
System.out.println(s1 == s2);
//s1和s3是不同的对象,所有返回false
System.out.println(s1 == s3);
//s3和s4是不同的对象,所有返回false
System.out.println(s3 == s4);
常用方法
StringBuilder 和StringBuffer
它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。