黑马程序员技术交流社区
标题:
java中equals和==的区别
[打印本页]
作者:
limengpiao
时间:
2014-9-10 15:36
标题:
java中equals和==的区别
在java和equals和==都是比较两个对象的值是否相等,比如
String a=new String("abc");
String b=new String("abc");
运行的时候发现a==b是false
而a.equals(b)是true
对于这个结果也看了一些资料,但具体还是不太明白,不知道谁能用简洁的语言帮我解答下吗?
作者:
陈云阳
时间:
2014-9-10 16:23
只要是new的对象,都是在内存地址中开辟一个新空间。
== 对于基本数据类型 它比较的是值, 对用引用数据类型它比较的就是对象的地址值,所以a==b是false
equals比较的是对象的内容,所以得出的true
作者:
nagi
时间:
2014-9-10 16:51
equals()表示他们对象所对应的值相等的,但是String 对象a 和b 是两个对象,在堆内存中是两块不同德局域 所以“==“的结果是false
作者:
weiyi
时间:
2014-9-10 17:53
a==b比较的是地址值,a.equals(b)是调用String类的equals方法,应该是内容的比较吧(具体你要参考java的API),如果还是不懂的话自己去看黑马的自学教程
作者:
卖艺人
时间:
2014-9-10 19:18
a==b 比较的是引用的地址值。
a和b分别指向的是不同的对象。结果自然是false,
而String类的 a.equals(b)方法是对Object类的equals()方法的覆盖。
它比较的是两个字符串中的内容是否相同。
作者:
雪无痕
时间:
2014-9-10 19:38
equals比较的是内容,而==是比较两个字符串的地址。所以如果==对两个String进行比较的话,永远会是false。
作者:
爽朗的菜籽
时间:
2014-9-10 22:11
== 比较的是 内存中的地址值 只要是new 就会出现在内存中出现新的地址 你new了2次 2次的地址值当然不会相同
equals 是 java的 根基类 Object 中的方法 在Object中与 == 一致 比较的都是地址值 所以一般 在子类中都会 重写父类Object中的equals方法 String中重写的equals()方法 比较的是 字符的排列顺序 明白了吗
有不会的地方希望 朋友指出来 让我学习一下 谢谢了 真心感谢 :hug:
作者:
郭旭辉
时间:
2014-9-10 22:18
a==b 因为是new 的。。都有各自的地址值,肯定不一样的。。。equals比较的是两者的内容,所以相同。。
作者:
daoqin
时间:
2014-9-10 23:45
一个比较地址,一个比较内容
作者:
however_
时间:
2014-9-11 00:25
a和b都是new的对象,是在内存地址中开辟一个新空间,都有自己的地址值。 == 对于基本数据类型 它比较的是值, 对用引用数据类型它比较的就是对象的地址值,a和b都是new出来的,所以a==b是false equals比较的是对象的内容,内容都是一样的,所以得出的true
就相当于a和b是两个盒子,里边分别装着一个完全相同的杯子,==就是在比较盒子的摆放位置,而equals是在比较盒子里的东西是不是一样
作者:
zhangxun
时间:
2014-9-11 00:29
这回复的一个比一个好
作者:
默默丶
时间:
2014-9-11 10:43
==比较的引用地址
equlas比较的是对象本身
作者:
turan
时间:
2014-9-11 10:57
2楼正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2