String s = new String("xyz") 究竟创建了几个对象

两个或者一个:

一个是编译时是放在常量池中,另一个是运行时放在堆中,两个都是“xyz”。

常量池中只能有一个“xyz”,所以当常量池中有一个了,就不会再创建了,运行时肯定会创建一个。

注:如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。

 

posted @ 2017-05-10 17:14  张主任好  阅读(340)  评论(0)    收藏  举报