1.String对象创建之后则不能被修改,是不可变的,所谓修改其实是创建了新的对象,所指向的内存空间是不同的。
2.每次new 一个字符串就是产生一个新的对象,即使两个字符串的内容相同,使用==比较的时候也比较为“false”,如果只需要比较内容相同,应该使用“equals()”;
例子:
package pro; public class StringTest { /** * @param args */ public static void main(String[] args) { // TODO 自动生成的方法存根 String s1 = "hello world"; String s2 = "hello world"; System.out.println(s1==s2); String s3 = "I love "+s1; String s4 = "I love "+s1; System.out.println(s3==s4); String s5 = new String("hello"); String s6 = new String("hello"); System.out.println(s5==s6); } }
2.SringBuffer() StringBuilder()可以避免额外产生很多临时变量,StringBuffer是线程安全的,而StringBuilder没有实现线程安全功能,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。