读书人

equals与==的比较解决方案

发布时间: 2012-04-22 18:34:46 作者: rapoo

equals与==的比较
使用equals方法可以比较两个字符串是否相等,因为String重写了Object的equals方法,而==运算符比较两个对象引用是否相同的实例。

Java code
public class TestToString {        public static void main(String[] args) {        String s1 = "hello";        String s2 = "hello";//String s2 = new String("hello");改成这样的话,它又是false了。                 System.out.println(s1 == s2);//那我觉得这应该是false呀??为什么它是true????    }}


大惑不解中。





[解决办法]
String s2 = "hello";
执行这个的时候会先在字符串池中寻找有没有"hello"这个字符串,有的话则直接指向那个地址,这里就直接指向了s1的地址

String s2 = new String("hello");
这个则不管有没有,直接开辟空间
[解决办法]
String s1="hello"; 声明一个String类型的 变量

String s2 = new String("hello");是声明一个String类型的对象

String s1="hello"; s1是放在内存常量区

String s2 = new String("hello");s2是放在内存堆空间里
[解决办法]
探讨
使用equals方法可以比较两个字符串是否相等,因为String重写了Object的equals方法,而==运算符比较两个对象引用是否相同的实例。Java codepublicclass TestToString {publicstaticvoid main(String[] args) {
String s1="hello";
String s2="hello";//String s2 = new String("hello");改成这样的话,它又是false了。 System.out.println(s1 == s2);//那我觉得这应该是false呀??为什么它是true???? }
}

大惑不解中。



读书人网 >J2SE开发

热点推荐