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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冰深 中级黑马   /  2012-11-17 10:56  /  1225 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冰深 于 2012-11-17 11:01 编辑


我在练习使用XML进行crud的时候有这样一段删除代码,最初是这样写的:

  1. //通过姓名删除,别忘记保存,判断字符串是否相等用equals
  2. public void deleteByName(String name){



  3. Document document=null;

  4. try {

  5. document = XmlUtils.getDocument();

  6. NodeList list=document.getElementsByTagName("name");

  7. Node node;

  8. for(int i=0;i<list.getLength();i++){

  9. node=list.item(i);

  10. if(node.getTextContent()==name){

  11. node.getParentNode().getParentNode().removeChild(node.getParentNode());

  12. //将更新后的数据写回XML文件

  13. XmlUtils.dom2XML(document);

  14. return;

  15. }



  16. }

  17. throw new StudentException("删除失败!");

  18. } catch (StudentException e) {

  19. // TODO Auto-generated catch block

  20. e.printStackTrace();

  21. }

  22. }
复制代码
结果在测试用例的时候
  1. private static void Delete() {
  2.                 // TODO Auto-generated method stub
  3.                 StudentDao dao=new StudentDao();
  4.                 dao.deleteByName("Coco");
  5.         }
复制代码
发现删除失败!我第一个想到的是没有保存到XML,但又确定我保存了,之后才考虑到是“==”和“equals”的区别,然后将“==”改成“equals”就OK了~

java中equals和和和和==的区别
       值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。  ==比较的是2个对象的地址,而equals比较的是2个对象的内容。 显然,当equals为true时,==不一定为true。

小结:
      看来“==”和“equals”还是要仔细分清楚才行,不然这错误就难找了~~~~



评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
涨知识了 马克下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马