黑马程序员技术交流社区

标题: equals 与==的一些问题和equals与instanceof它们的区别与联系 [打印本页]

作者: kmlitheima    时间: 2015-6-3 10:12
标题: equals 与==的一些问题和equals与instanceof它们的区别与联系
虽然到现在,我会去使用,但是具体的底部原理还是没有弄明白?equals我认为比较就是它的内容是不是一样即可。而==不仅比内容还要比地址。不知道是不是这样判断的?
equals和instanceOf它们的底部也不清楚,也只知道如何使用。希望知道的能回答。

作者: kmlitheima    时间: 2015-6-3 10:16
kikt 发表于 2015-6-3 10:15
equals方法每个类都不一样吧,而且很多类有自己独有的Equals方法,而instanceof底层应该是通过反射来实现的 ...

哦,原来如此。受教啦!
作者: LSK~    时间: 2015-6-3 11:14
看代码1:
String s1 = "hello";
String s2 = "hello";
结果
s1 == s2为true,
解释
s1 与 s2 引用同一个 String 对象 。
看代码2:
String s1 = "hello";
String s2 = new String("hello");
结果
s1 equals s2为true,解释
s1 s2分别引用了两个"hello"String对象,new 操作符,表示新的Sting对象被创建在内存中



==:等于
如果进行被比较的两个操作数都是数值类型,也就是8种基本数据变量之一,即使他们的数据类型不一样,
只要值相同,就返回true,如97==‘a’返回true,5.0=5,返回true。
如果操作的数是引用类型,或者也叫复核数据类型,那么只有当两个引用变量引用相同的类的实例的时候才可以比较,
而且两个引用必须指向同一个对象才会返回true。

作者: wuyusi    时间: 2015-6-3 11:43
看评论学习学习
作者: jake_liu    时间: 2015-6-19 11:14
zhangkai986745 发表于 2015-6-3 11:54
==比较的是具体的值,equals比较的是内存中的地址值,只要明白这个不变的原理就不会混淆了 ...

搞反了吧
作者: 草原上的小黑马    时间: 2015-6-20 13:24
恩  ,分引用类型和基本数据类型,板凳那楼说的不错




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