黑马程序员技术交流社区

标题: 求大神告知,java中equals和==的区别 [打印本页]

作者: 黑马黑马我来了    时间: 2015-9-22 16:38
标题: 求大神告知,java中equals和==的区别
求大神告知,java中equals和==的区别

作者: 643997890    时间: 2015-9-22 16:38
==比较的是对象的地址,也就是是否是同一个对象;
equal比较的是对象的值。
Integer r1 = new Integer(900);//定义r1整型对象
Integer r2 = new Integer(900);//定义r2整型对象
System.out.println(r1==r2);//返回false
System.out.println(r1.equal(r2));//返回true
作者: longxuxu    时间: 2015-9-22 16:51
说的好详细,合适的发生
作者: 1975532882    时间: 2015-9-22 19:01

==比较的是对象的地址,也就是是否是同一个对象,包括数据类型和数值;
equal比较的是对象的值。
Integer r1 = new Integer(900);
Integer r2 = new Integer(“900”);
System.out.println(r1==r2);//返回false,因为对象900和“900”的地址(数据类型)不同,前者是整数型,后者是字符串。
System.out.println(r1.equal(r2));//返回true,因为对象900和“900”的数值相同。
作者: 菊花爆满山    时间: 2015-9-22 21:19
所有的类都继承Object, 所以所有的类也都有equals方法,如果没有复写该方法,等同于==,也就是比较的是对象的地址值,但是如果复写了,就完全不同了,例如String这个对象,复写后的功能是比较2个对象的内容是否相同。
作者: zrc203    时间: 2015-9-29 21:07
对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址
对于equals方法,注意:equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。




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