A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© an3077458 中级黑马   /  2015-9-23 21:52  /  215 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于上述关于equals()总结如下:
a.类型不兼容的两个对象可以用equals(),但是只要比较的对象类型不同(哪怕值相同), 永远返回false     b.对于没有覆盖equals()的类,即使对象类型相同,值也相同,但返回的仍旧是false, 因为它用的是object的默认equals方法(与==相同)   
c然而对于覆盖equals()的类,只要值相同,便返回true。这些类是 String,Wrappers,Date,Calendar,BitSet等   
对于==总结如下:   
a.类型不兼容的两个对象不可以用==,若用则编译错误   
b.同种类型的对象,假如不是指引同一个对象,则返回为false(只有指向同一个内存 块的对象才返回true)     
c.对于String情况有些不同,因为String对象有字面量和构造函数之分。字面量对象是 放在缓冲池中的,这意味着,如果两个字面量值相同,则第二个对象会指向第一个已经存在的对象,而不会新产生,所以==返回的是true。用构造器产生的对象同一般对象。对于字面量来说,多个类共享的是同一个缓冲池。这意味着在另外一个类中创建一个先前类中已有的字面量字符串,则仍旧是同一对象。        
另外,注意,toUpperCase()、toLowerCase()方法而言,如果大小写形式与原始String 没什么差别,方法返回原始对象,==返回true。     
d.对于基本类型而言,系统会自动先归一精度,然后再比较值,若值相同则返回true。

1 个回复

倒序浏览
不错。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马