随笔-60  评论-117  文章-0  trackbacks-0
这是一个很简单,但却是像我这样的初学者很容易混淆的问题。作为初学者想要理解某一问题 ,以我之见,就是动手编个程序。
      = =和equals究竟有何区别?
程序1:
public class Test {
 public String judge(String a, String b) {
  if (a == b) {//如果a的内存地址等于b的内存地址,即a,b为同一个对象
   return "true";
  } else {
   return "false";
  }
 }

 public static void main(String args[]) {
  String a = new String("foo");//创建一个对象,将为它分配一个新空间。
  String b = new String("foo");
  Test test = new Test();
 System.out.println("result=="+test.judge(a, b));
 }
}
结果为:result==false
程序2:
public class Test {
 public String judge(String a, String b) {
  if (a.equals(b) ) { //如果a字符串的值等于b字符串的值
   return "true";
  } else {
   return "false";
  }
 }

 public static void main(String args[]) {
  String a = new String("foo");
  String b = new String("foo");
  Test test = new Test();
 System.out.println("result=="+test.judge(a, b));
 }
}
结果为:result==true
程序3:
public class Test {
 public String judge(String a, String b) {
  if (a==b) {
   return "true";
  } else {
   return "false";
  }
 }

 public static void main(String args[]) {
  String a = "foo";//将a指向这个字符串,不为它分配空间。
  String b = "foo";
  Test test = new Test();
 System.out.println("result=="+test.judge(a, b));
 }
}
结果为:result==true
程序4:
public class Test {
 public String judge(String a, String b) {
  if (a.equals(b)) {
   return "true";
  } else {
   return "false";
  }
 }

 public static void main(String args[]) {
  String a = "foo";
  String b = "foo";
  Test test = new Test();
 System.out.println("result=="+test.judge(a, b));
 }
}

结果为:result==true
总结一下:
但是“= =“操作符并不涉及到对象内容的比较,只是说这两个对象是否为同一个。而对象内容的比较,正是equals方法做的事。
posted on 2007-04-17 13:35 静儿 阅读(702) 评论(3)  编辑  收藏

评论:
# re: = =和equals有何区别 2007-04-17 17:39 | 山风小子
温故而知新,可以为师矣 :)  回复  更多评论
  
# re: = =和equals有何区别[未登录] 2009-04-02 18:01 | zhangqin
不错啊,多谢了啊  回复  更多评论
  
# re: = =和equals有何区别 2009-10-20 15:26 | 一直在努力
很好 谢谢了 辛苦  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: