Topic: 关于 == 和 equal()的区别 |
Print this page |
1.关于 == 和 equal()的区别 | Copy to clipboard |
Posted by: constantin Posted on: 2007-09-28 13:01 看书说, equal()只能用来比较object, ==只能用来比较Primitive value 和 reference. 可是我比较不明白的是,我们在许多code里看到 Double d1=new Double("3.0"); Integer i1=new Integer(3); if(d1.equals(i1)){ System.out.println("wrapsareequal"); } 这里的d1, 和i1不是 double, integer object 的reference,为什么用equals 去比较呢? |
2.Re:关于 == 和 equal()的区别 [Re: constantin] | Copy to clipboard |
Posted by: andy_wang_5 Posted on: 2007-09-28 18:12 ==用来比较内存地址是否相等:
String 类的不可变的,a和b会指向同一内存地址,所以返回true
因为用new创建了两个对象,所以a和b指向两个不同的内存地址,所以返回false equal()是object的方法,所以只适用于对象,不使用于基本类型。 不过equal()默认是用“==”比较两个对象的内存地址,如果想比较两个对性的内容,要重写equal()方法才可以 String的equal()方法是这样重写的
至于书上写的“==只能用来比较Primitive value 和 reference.”是不对的,==可以用来比较基本类型(Primitive)也可以用来比较对象。reference是作为对象的句柄使用的。不知道作者为什么这样说。 顺便问一句:你看得什么书? |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |