String知识点总结说明

2008-07-28 11:12:57.0     浏览:565     来源:中国IT实验室
关键词:  String     总结  

System.out.println( s1+\" \"+s2 );


System.out.println( s2==s1.intern() );


结果:


false


kvill kvill


true


在这个类中我们没有声名一个”kvill”常量,所以常量池中一开始是没有”kvill”的


当我们调用s1.intern()后就在常量池中新添加了一个”kvill”常量,原来的不在常量池中的”kvill”仍然存在,也就不是“将自己的地址注册到常量池中”了。


s1==s1.intern()为false说明原来的“kvill”仍然存在;


s2现在为常量池中“kvill”的地址,所以有s2==s1.intern()为true。


5. 关于equals()和==:


这个对于String简单来说就是比较两字符串的Unicode序列是否相当,如果相等返回true;而==是比较两字符串的地址是否相同,也就是是否是同一个字符串的引用。


6. 关于String是不可变的。


这一说又要说很多,大家只要知道String的实例一旦生成就不会再改变了, [Page]


比如说:String str=”kv”+”ill”+” “+”ans”;

就是有4个字符串常量,首先”kv”和”ill”生成了”kvill”存在内存中,然后”kvill”又和” “ 生成 ”kvill “存在内存中,最后又和生成了”kvill ans”;并把这个字符串的地址赋给了str,就是因为String的“不可变”产生了很多临时变量,这也就是为什么建议用StringBuffer的原因了,因为StringBuffer是可改变的。

[上一页]   [第1页]   [第2页]