黑马程序员技术交流社区
标题:
一个小问题
[打印本页]
作者:
张明星
时间:
2012-4-1 10:28
标题:
一个小问题
private static void changeStringValue(Object obj)throws Exception{
Field[] fields=obj.getClass().getFields();
for(Field field: fields){
if(field.getType()==String.class) //字节码比较用等号
{
String oldValue = (String)field.get(obj);
String newValue=oldValue.replace('b', 'a');
field.set(obj, newValue);
}
张老师的视频上说:比较两个字节码相同用等号,不用equals,原因是什么,谁能解释的清楚一点?
作者:
曹魁
时间:
2012-4-1 11:34
==操作符专门用来比较
两个变量的值
是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
equals方法是用于比较两个
独立对象的内容是
否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。
作者:
李井山
时间:
2012-4-1 21:25
==比较的是是否是同一个,equals比较的是2个对象是否相等
假如桌子上有一个苹果,俩个引用都指向他,这俩个引用叫==
假如桌子上有2个苹果,两个引用分别指向他们,这时是equals
你代码中的例子是因为在内存中只有一份字节码
作者:
袁计艳
时间:
2012-4-1 22:18
“==”对于基本数据类型,判断两个变量的值是否相等。equal用于比较两个对象是否相同。而字节码为对象具体值,所以用“==”
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2