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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙宁洋 中级黑马   /  2013-6-4 19:33  /  1163 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张老师讲的反射中判断field.getType()==String.class()为什么不能用equals,张老师说同一个字节码就用==,不是很理解求指教

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

3 个回复

倒序浏览
没说不可以用,只是用 == 号语意更准确。或者说比equalse显得更专业。
就比如 变量比较 用 ==一样。
我的理解是就象 int类型比较值大小 用 == 不同类型如 int和char就不能用 == 了,
基于这种思想,在比较同一种类型时用 == 号意思更明确一点。
这里都是Class类型所以用 == 来比较,但是这里equals也是调用的 == 所以也可以使用,但是走了弯路通过equals调用==

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
因为字节码在内存中具有唯一性,因为两个字节码就是两个对象,两个对象就是两个内存地址值,equals方法就是比较内存地址值的,你拿两个内存地址值不同的字节码对象进行比较,那么没意义,肯定是false。如果用双等号才能证明两个字节码的内容是否真正相同,这里强调的是内容,因为他比较的是二进制的文件的内容。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
楼上正解。。。字节码就是010101这种形式的2进制的内存地址,比较肯定==啦,因为==操作符比较的是内存地址,equals是比较内存地址中的值。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马