java String 以及字符串直接量 与 字符串驻留池 ...(三)

2014-11-24 08:36:53 · 作者: · 浏览: 2
. ...

但实际上,这条语句只创建了一个 String 对象!
为什么会这样呢?原因很简单,这是因为,mail 在 编译的时候其值就已经确定,它就是 "fancydeepin@yeah.net" 。
当程序处于运行期间且当上面的这条语句被执行到的时候,那么 mail 所引用的对象就会被创建,而 mail 的值由于在编译的时候已经确定
它是 "fancydeepin@yeah.net" ,所以最终只有一个 String 对象被创建出来,而这个对象就是 "fancydeepin@yeah.net" 对象。www.2cto.com

这样解释都能够理解了吧?真的理解了吗?是真的理解才好,不妨再来看一个:
eg:
String mail = new String("fancydeepin@yeah.net");

这回又创建了几个对象呢?
答案是2个。为什么不是1个了呢?2个又是哪2个呢?
可以很肯定的告诉你,它们分别是: "fancydeepin@yeah.net"、new String()
这是因为,这回 mail 在编译的时候它的值是还不能够确定的,编译只是将源代码翻译成字节码,程序还并没有跑起来,还 new 不了对象,
所以在编译完成之后,mail 的值是还不能够确定的。
当程序处于运行期间且当上面的这条语句被执行到的时候,这时候才开始去确定 mail 的引用对象,首先,"fancydeepin@yeah.net" 对象会被创建,
之后,再执行 new String(),所以这条语句最后实际上是创建了 2个 String 对象。

作者:fancydeepin