当前位置: 代码迷 >> J2SE >> equals与==的比较解决方案
  详细解决方案

equals与==的比较解决方案

热度:123   发布时间:2016-04-24 01:17:32.0
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???? }
}

大惑不解中。



  相关解决方案