String s1=new String("abc");
String s2=new String("abc");
System.out.println (s1==s2);结果为什么是false?
解释:首先,前两句是定义两个字符串对象并实例化。由于在实例化时,会产生两个对象,由于字符串对象abc并不是存储在对象中,在常量池中,对象中的引用指向abc对象。而new String会产生两个封装对象并分配两个不同的哈希值,所以比较s1与s2是否相同,所以结果是false。
若要比较内容相同,应使用String类中的equals方法,因为它重写了Object的方法,比较的两个字符串对象的内容是否相同。 |