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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xp8812 中级黑马   /  2014-6-5 21:55  /  1275 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java中==和equals的区别是什么啊,怎么感觉差不多的样子

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

9 个回复

倒序浏览
本帖最后由 杨韬略 于 2014-6-5 22:10 编辑

解答:“==”是指向内存地址类似于c的指针,equal(),才是比较两个字符串的内容,如下面这个程序所示。
public class Test5 {

public static void main(String[] args) {
    String s = "abc";
          s.substring(1);
          s.replace("bc", "xyz");
         System.out.println(s); //输出结果为abc,因为字符串一经创建是不能更改的,若要修改可以使用StringBuffer
         String value = new String ("abc");
         System.out.println(s ==  value);//输出结果为false,因为==逻辑运算符引向的是地址,而用equals就是比较值,跟c的指针是一个道理
      System.out.println(s.equals(b));//输出结果为true
}
}


评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
== 是比较值  equals  比较对象里面的内容
回复 使用道具 举报
class Person{}
回复 使用道具 举报
class MainDemo
{
        public static void main(String[] args)
        {
                int i=5;
                int b=5;
                if(i==b)
                        System.out.println(true);
                if(new Integer(b).equals(new Integer(i)))
                        System.out.println(true);
        }
}
回复 使用道具 举报
equals方法判断对象的内容是否相等  ==是比较数值用的
回复 使用道具 举报
"=="比较的是内存地址是否相同,而equals比较的是字符串内容是否相同。比如  String x1=new String("abc");
  String x2=new String("abc");
  System.out.println(x1==x2);
  System.out.println(x1.equals(x2));
结果:
false
true
分析:equals是比较值,==是比较地址 ,x1和x2值相同但是地址不同,只要new一个对象就产生一个地址。
比如  String x1="abc";
  String x2="abc";
  System.out.println(x1==x2);
  System.out.println(x1.equals(x2));
结果:
true
true
分析:x1 x2指向同一个"abc",同一个"abc"的值和地址当然都相同了。

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报
a==b比较的是a对象和b对象在内存所对应的地址,如果返回true,则说明a和b必定是指向同一个对象。a.equal(b)是比较a和b的值,如果返回true则说明a的值和b的值相同,但是注意的是返回值为true时  a和b可以不是同一对象
回复 使用道具 举报
:'(

==运算符判断指针值

equals方法判断堆对象内存值

回复 使用道具 举报
楼上回答得很清楚!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马