A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© §傻、才乖 中级黑马   /  2014-1-17 12:21  /  2171 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String name="zhangsan";
如果我用name和"lisi"比较用"=="好点,还是用equals好

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

12 个回复

倒序浏览
"zhangsan".equal("lisi");
你直接用==,他们是永远都不会相等的。因为他们是两个不同的String对象,有不同的地址
回复 使用道具 举报
equals比较的参数的值,==比较的是内存地址。看你想比较的是什么就选择哪个
回复 使用道具 举报
xu6148152 发表于 2014-1-17 12:28
"zhangsan".equal("lisi");
你直接用==,他们是永远都不会相等的。因为他们是两个不同的String对象,有不同 ...

我不要结果,就是如果一个String对象和一个字符串比,是用“==”合适还是equals合适
回复 使用道具 举报
   这是equals方法的源码:
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
回复 使用道具 举报
我们都知道,在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,因为,对象内容是一样的


你的问题应该可以解决了
回复 使用道具 举报
你觉得那个好呢?我觉得都一样,因为equals底层使用的就是“==”关系运算符。{:soso_e100:}
回复 使用道具 举报
这种情况下用equals比==好,equals比的是内容,==比的是内存地址值。
回复 使用道具 举报
刚才在张老师的面试题里看到的
下面的代码有什么不妥之处
if(username.equals(“zxx”){}
回复 使用道具 举报
我想是不是用==比较好,同一个字符串在内存中只存在一份,
但不确定是不是==好,所以才问一下大家的看法
回复 使用道具 举报
如果要比较内存地址值 用==号 如果要比较内容是否相同 那就equals
回复 使用道具 举报
kira 中级黑马 2014-1-17 13:23:32
12#
用equals "=="比较的是内存地址
回复 使用道具 举报
看你的需求了,如果比较内存地址,使用==
如果比较内容是否相等是用equals()
。非字符串的比较,==与equals(),一样都是比较两个字符串所包含的内容是否相等!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马