`
leonzhx
  • 浏览: 769647 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

读“熔岩”的"深入Java字符串" 有感

 
阅读更多

读出熔岩同志的 深入Java字符串 ,感觉写得确实比较详尽,但有些地方确实值得讨论一下,

 

首先, 第二章 “String对象的创建” 写得不是很清楚。 比如:

1) 原理1中“使用任何方式来创建一个字符串对象”的表述就不太对,比如 new String ( s) ,s为一个字符串变量。就不满足原理1。

 

2) 原理2中“在堆区或栈区”写得不是很清楚,对象应该是在“堆“中创建,而指向String对象的引用则是在”栈“中创建。

当然聪明的读者在读了其后的代码例子后就能理解了。

 

其次,在后面的代码例子中有这样一段:

 //在池中创建对象"ab" 和 "c",并且s4指向池中对象"abc"
        String s4 = "ab" + "c"; 

 我个人的理解是,编译器会优化代码成:

String s4="abc"

 而常量池中只会有"abc"。不知道理解得对不对。

 

0
0
分享到:
评论
2 楼 qfstudying 2013-01-21  
应该是产生一个对象,编译时编译器会将 "ab"、"c" 合并成"abc", 这一点可以通过字节码工具查看生成的.class文件就知道了。
1 楼 qfstudying 2013-01-21  
应该是产生一个对象,编译时编译器会将 "ab"、"c" 合并成"hello", 这一点可以通过字节码工具查看生成的.class文件就知道了。

相关推荐

Global site tag (gtag.js) - Google Analytics