请问s=new String("Hello");和s="Hello";有什么区别~~

解决方案 »

  1.   

    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。