转载请注明出处: http://www.liubida.com/programming_language/string-stringbuffer-stringbuilder/
昨天又碰到了String的问题, 索性在网上看了个明白, 其中这篇帖子String in Java讲的最透彻, 推荐一下.
看完了这个帖的内容, 相信应该对这三个恼人的东西比较清楚了, 我做了个简单的小结.
String s1 = "123";
String s2 = new String("123");
String s3 = s2.intern();
1. String是个对象. “123″常量在类被加载的时候, 由JVM自动的在string_pool中生成了一个拘留字符串(intern_string…谁能告诉我这个到底叫什么字符串, 这个名字太秀逗了…)
s1只是一个变量, 它直接指向了string_pool中的那个拘留字符串. id=15.
s2是一个变量, 它指向了堆上的一个字符串对象, 该对象是由同一个拘留字符串初始化的. id=21.
s3是一个变量, 通过intern()方法, 使他指向了初始化这个堆对象的拘留字符串. id=15.
所以s1!=s2; s1=s3;
2. String不可变是因为内部的char[]是final, 而String[Buffer|Builder]是可变的char[] Read the rest of this entry »
String StringBuffer StringBuilder
– 2011.05.17Posted in: 编程