黑马程序员技术交流社区

标题: Java中==和equals的区别是什么啊 [打印本页]

作者: xp8812    时间: 2014-6-5 21:55
标题: Java中==和equals的区别是什么啊
Java中==和equals的区别是什么啊,怎么感觉差不多的样子

作者: 杨韬略    时间: 2014-6-5 22:03
本帖最后由 杨韬略 于 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
}
}



作者: 卞新浩    时间: 2014-6-5 22:19
== 是比较值  equals  比较对象里面的内容
作者: 塔罗    时间: 2014-6-5 22:27
class Person{}
作者: 四顾行者    时间: 2014-6-5 22:35
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);
        }
}
作者: haohanlinyu    时间: 2014-6-5 22:54
equals方法判断对象的内容是否相等  ==是比较数值用的
作者: \(^o^)/    时间: 2014-6-5 23:00
"=="比较的是内存地址是否相同,而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"的值和地址当然都相同了。
作者: 、海    时间: 2014-6-5 23:03
a==b比较的是a对象和b对象在内存所对应的地址,如果返回true,则说明a和b必定是指向同一个对象。a.equal(b)是比较a和b的值,如果返回true则说明a的值和b的值相同,但是注意的是返回值为true时  a和b可以不是同一对象
作者: 251638256    时间: 2014-6-5 23:25
:'(

==运算符判断指针值

equals方法判断堆对象内存值


作者: 黄宝宝    时间: 2014-6-6 09:32
楼上回答得很清楚!




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