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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 昝文萌 中级黑马   /  2013-9-6 19:38  /  1431 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 昝文萌 于 2013-9-7 12:13 编辑

Field.getType()==String.class 于Field.getType().equals(String.class)这里用“==”和equals有什么区别?String.class它表示的是一个变量吗,也就是对象的引用吗?我想他们能用等号比较,肯定代表就是地址值,我想它应该是一个特殊的引用变量用来指示Sting字节码的地址的?求大神解一下惑!

评分

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

查看全部评分

5 个回复

倒序浏览
本帖最后由 李锡碧 于 2013-9-6 19:51 编辑

eques用于字符串的值比较。
==,如果是基本类型比较值,如果是对象类型则比较内存地址
String.class它表示String类的class对象

评分

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

查看全部评分

回复 使用道具 举报
首先Field.getType()这个方法,返回的是一个Class类型的对象。
String.class是String类的class对象。获取某个类的class对象有三种方法,视屏里有说。
两个对象用==判断,是判断两个对象的地址值是否一致。
Field.getType().equals(String.class),这里调用的是Class类对象中的equals()方法,因为这个equals方法没有被复写,直接继承的Object类,所以也是比较的地址值。

评分

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

查看全部评分

回复 使用道具 举报
胡智 发表于 2013-9-6 19:48
首先Field.getType()这个方法,返回的是一个Class类型的对象。
String.class是String类的class对象。获取某 ...

正解!!!!
回复 使用道具 举报
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类

回复 使用道具 举报
有够快的    萌萌   哥在北京等你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马