首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

equals与==的比较解决方案

2012-04-22 
equals与的比较使用equals方法可以比较两个字符串是否相等,因为String重写了Object的equals方法,而运

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???? }
}

大惑不解中。



热点排行