黑马程序员技术交流社区
标题:
关于java中的equals和==的区别和联系的
[打印本页]
作者:
冰深
时间:
2012-11-17 10:56
标题:
关于java中的equals和==的区别和联系的
本帖最后由 冰深 于 2012-11-17 11:01 编辑
我在练习使用XML进行crud的时候有这样一段删除代码,最初是这样写的:
//通过姓名删除,别忘记保存,判断字符串是否相等用equals
public void deleteByName(String name){
Document document=null;
try {
document = XmlUtils.getDocument();
NodeList list=document.getElementsByTagName("name");
Node node;
for(int i=0;i<list.getLength();i++){
node=list.item(i);
if(node.getTextContent()==name){
node.getParentNode().getParentNode().removeChild(node.getParentNode());
//将更新后的数据写回XML文件
XmlUtils.dom2XML(document);
return;
}
}
throw new StudentException("删除失败!");
} catch (StudentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
复制代码
结果在测试用例的时候
private static void Delete() {
// TODO Auto-generated method stub
StudentDao dao=new StudentDao();
dao.deleteByName("Coco");
}
复制代码
发现删除失败!我第一个想到的是没有保存到XML,但又确定我保存了,之后才考虑到是“==”和“equals”的区别,然后将“==”改成“equals”就OK了~
java中equals和和和和==的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。 显然,当equals为true时,==不一定为true。
小结:
看来“==”和“equals”还是要仔细分清楚才行,不然这错误就难找了~~~~
作者:
肖晓峰
时间:
2012-11-17 13:44
涨知识了 马克下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2