当前位置: 代码迷 >> J2SE >> 问一个概念性的有关问题
  详细解决方案

问一个概念性的有关问题

热度:233   发布时间:2016-04-24 15:37:23.0
问一个概念性的问题?
请问s=new   String( "Hello ");和s= "Hello ";有什么区别~~

------解决方案--------------------
s= "Hello ";表示Hello是一个字符串常量池中的对象而不是在堆中,如果有s1= "Hello ";的话,s==s1会返回true。

s=new String( "Hello ");相当于先在字符串常量池中生成一个字符串对象Hello(如果目前常量池中不存在该对象的话),然后在heap中生成一个对象(new String操作),该对象的内容就是在常量池中生成的字符串对象。即s=new String( "Hello ");相当于s0= "Hello ";s=new String(s0);如果还有s1=new String( "Hello ");那么s==s1返回false,而s.equals(s1)返回true。
  相关解决方案