这是一个很简单,但却是像我这样的初学者很容易混淆的问题。作为初学者想要理解某一问题 ,以我之见,就是动手编个程序。
= =和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) 编辑 收藏