本帖最后由 冰深 于 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”还是要仔细分清楚才行,不然这错误就难找了~~~~
|