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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yujiangjiao 中级黑马   /  2014-4-11 04:17  /  872 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是成员变量反射综合案例这节, 获取字段的类型,为什么字节码类型的比较要用==,而不用equals,二者有什么区别,什么时候用equals,什么时候用==,有些疑惑,请教高手解惑,感谢

  1. public static void changeStringValue(Object obj) throws Exception
  2.         {
  3.                 //扫描成员变量Field 类
  4.                 Field[] fields=obj.getClass().getFields();
  5.                 for(Field field:fields)//加上类型Field
  6.                 {
  7.                         //if(field.getType().equals(String.class));//获取字段的数据类型(不用equals比较)
  8.                         if(field.getType()==String.class)//为什么字节码类型的比较要用==,而不用equals,二者有什么区别
  9.                         {
  10.                                 String oldValue=(String)field.get(obj);
  11.                                 String newValue=oldValue.replace('b', 'a');
  12.                                 field.set(obj, newValue);
  13.                                
  14.                         }
  15.                        
  16.                 }
  17.         }
复制代码

评分

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

查看全部评分

5 个回复

正序浏览
这里用equal闲的有点多余,不是很符合语义,因为equal用的就是==方法,还有根据自己的比较情况复写的。类的字节码在内存里只有一份,用==就可以了
回复 使用道具 举报
.equals一般是用于比较内容,而==是用来比较内存地址,所以判断对象是否相等一般用equals比较内容,而判断类(字节码)是否相等一般是用==比较,因为类比较一般都是比较是不是同一个类(字节码)。这要看你比较是出于什么目的了。。
回复 使用道具 举报
因为equals的内部就是==,所以你在比较字节码文件是否是同一份,就可以使用==来直接进行比较。
回复 使用道具 举报
1. == 基本数据类型都用这个比较
Java里面包含8个基本数据类型,分别是:
boolean、byte、char、short、int、float、double、long
注意String 不属于基本数据类型,它是个类
2..equals() 用于引用数据类型(除了上面的8个,都是引用数据类型,包括封装类,Object子类等),  比较是否指向相同的对象,
例如 String str = "abc";
等效于: char data[] = {'a', 'b', 'c'};  String str = new String(data);
就是str 指向了  new String(data) 这个对象. 如果再有其他变量也指向这个对象,他们比较的结果就返回true;
由于此方法在Object里, 所以它有很多重写, 具体要看说明

评分

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

查看全部评分

回复 使用道具 举报
因为字节码在内存中值存在唯一的一份,用==就可以比较
equals也可以,但是显得有些多余,

==比较的是内存地址
equals是条用Object内的比较,默认情况向与==是相同的道理
只用重写了某个类的equals才会不相同

评分

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

查看全部评分

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