黑马程序员技术交流社区

标题: ==和equals [打印本页]

作者: §傻、才乖    时间: 2014-1-17 12:21
标题: ==和equals
String name="zhangsan";
如果我用name和"lisi"比较用"=="好点,还是用equals好

作者: xu6148152    时间: 2014-1-17 12:28
"zhangsan".equal("lisi");
你直接用==,他们是永远都不会相等的。因为他们是两个不同的String对象,有不同的地址
作者: 李跃峰    时间: 2014-1-17 12:33
equals比较的参数的值,==比较的是内存地址。看你想比较的是什么就选择哪个
作者: §傻、才乖    时间: 2014-1-17 12:33
xu6148152 发表于 2014-1-17 12:28
"zhangsan".equal("lisi");
你直接用==,他们是永远都不会相等的。因为他们是两个不同的String对象,有不同 ...

我不要结果,就是如果一个String对象和一个字符串比,是用“==”合适还是equals合适
作者: 小小瓶盖❤    时间: 2014-1-17 12:34
   这是equals方法的源码:
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
作者: 月生春    时间: 2014-1-17 12:35
我们都知道,在Object中equals是判断内存地址值是否相等,而String类复写了Object中的equals方法,,建立了自己对象的独特的比较内容,用于判断String对象的内容! ==是判断是否为同一对象  ,
如:
    String s1="abc";
     String s2=new String("abc");
   System.out.println(s1==s2);       // 运行结果为false  因为不是同一对象
   System.out.println(s1.equals(s2));       //为true,因为,对象内容是一样的


你的问题应该可以解决了
作者: 小小瓶盖❤    时间: 2014-1-17 12:37
你觉得那个好呢?我觉得都一样,因为equals底层使用的就是“==”关系运算符。{:soso_e100:}

作者: 够了没有    时间: 2014-1-17 12:42
这种情况下用equals比==好,equals比的是内容,==比的是内存地址值。
作者: §傻、才乖    时间: 2014-1-17 12:51
刚才在张老师的面试题里看到的
下面的代码有什么不妥之处
if(username.equals(“zxx”){}
作者: §傻、才乖    时间: 2014-1-17 12:52
我想是不是用==比较好,同一个字符串在内存中只存在一份,
但不确定是不是==好,所以才问一下大家的看法
作者: 黄晓鑫    时间: 2014-1-17 13:13
如果要比较内存地址值 用==号 如果要比较内容是否相同 那就equals
作者: kira    时间: 2014-1-17 13:23
用equals "=="比较的是内存地址
作者: 花生壳    时间: 2014-1-17 15:45
看你的需求了,如果比较内存地址,使用==
如果比较内容是否相等是用equals()
。非字符串的比较,==与equals(),一样都是比较两个字符串所包含的内容是否相等!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2