不可变字符串:
String对象是不可变的,它的内容是不能改变的。
String s="java";
s="HTML";
上面的语句并没没有改变字符串的内容,第一条语句创建了一个内容为"java"的字符串对象,并且将它的引用赋值给S,同理"HTML"的引用也赋值给S,"java"对象仍然存在,没有被改变,只是再也无法访问这个对象了。
限定字符串:
因为字符串在程序设计中不可变,但是又经常出现,所以java虚拟机为了节约内存和提高效率,对具有相同字符串序列的字符串直接量使用同一个实例,这样的实例成为限定的。
String s1="java";
String s2=new String("java");
String s3="java";
System.out.println("s1==s2 is " + (s1==s2));
System.out.println("s1==s3 is " + (s1==s3));
程序结果显示为:
s1==s2 is false
s1==s3 is true
注:字符串的==是用来判断字符串地址是否相同的,如果需要判断字符串内容是否相同,使用equals()函
数
更灵活的String替代类:StringBuilder 和StringBuffer
StringBuilder 和StringBuffer的对象是可以更改的,和String对象不一样,可以插入删除内容,所以更灵活,StringBuffer修改缓冲区的方法是同步的,除此之外,StringBuilder 和StringBuffer功能几乎类似