黑马程序员技术交流社区
标题:
==和equals
[打印本页]
作者:
黑马-邢广耀
时间:
2012-12-26 09:24
标题:
==和equals
本帖最后由 黑马-邢广耀 于 2012-12-27 10:09 编辑
这两天学习遇到这样一个问题,就是判断两个对象是否相等的时候,什么情况下该用“==”,什么时候该用equals呢?
作者:
谢辉林
时间:
2012-12-26 09:34
首先说一下值类型和引用类型的区别值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型
变量的地址,而本身则存在于堆中,即平时所说的值类型存在在栈中,引用类型存在于堆中
1:对于值类型==和equals是等价,都是比较在栈中栈中的值。
2:对于引用类型,==比较的是引用类型在栈中的地址,equals方法比较的是引用类型在堆中的值。
3:对于String类要特殊处理,它是一个内部已经处理好了equals方法和==的类,故==和equlas是等价的。
作者:
netboy032
时间:
2012-12-26 09:58
这里说下引用类型的比较,==在引用类型中表示比较的是地址是否相同。如果是Object类中的equals方法,它和==相同,也是地址;
这时你可以重写它。如果是String类中的equals方法,它比较的就是两个引用类型的值是否相同
作者:
何创
时间:
2012-12-26 10:43
== 和equals()两种比较方法记住下面的法则 就容易多了。
1、如果测试两个简单类型的数值是否相等,则一定要用“==”来比较;
2、如果要比较两个引用变量对象的值是否相等,则要用对象的equals()方法进行比较;
3、如果需要比较两个引用变量是否指向同一对象,则使用“==”来进行比较;
作者:
黄锦成
时间:
2012-12-26 11:01
==是用来比较对象的内存地址是否一致,一致则是同一对象
equals用来比较对象的内容,如比较两个字符串的内容是否一致,
通常用equals比较字符串内容:str1.equals(str2);
作者:
水天
时间:
2012-12-26 14:10
假设有两个一样箱子,里面都各自装了一本以样的书。如果你想判断这两个箱子是不是同一个箱子,就用==。
如果你想判断箱子里装的东西是否一样,就用equals.
作者:
黑马-邢广耀
时间:
2012-12-27 01:25
懂了,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2