本帖最后由 Yov正 于 2014-5-10 22:35 编辑
- /**
- * jvm运用pool技术管理String对象,也就是有一块地方,专门存放String对象.pool里的对象是可重用的
- */
- public static void main(String[] args) {
- String s1 = "ab";//pool里新增"ab",引用返回给s1
- String s2 = "cd";//pool里新增"cd"
-
- String s3 = s1 + s2;//pool里确实新增了一个"abcd"对象,但是s3指向的是堆的地址,堆指向pool中的地址
- String s4 = "abcd";//pool里"abcd"的引用返回给s4
- String s5 = "ab" + "cd";//pool里本来就有"abcd"不再生成新的.再次把pool里"abcd"的引用返回给s5
- //==判断引用是否相等,equals判断内容是否相等,==比equals判断的更苛刻
- System.out.println("s3 == s4? " + (s3 == s4));//堆的引用和池的引用不等
- System.out.println("s4 == s5? " + (s4 == s5));//池和池的引用相等
-
- }
复制代码
其实这个玩意不用记住,知道有个这个事,到时候碰上了是什么结果就可以怎么解释.信不信就算结果相反我也能牵强上一些理由{:3_47:} |