日期:2014-05-20 浏览次数:21198 次
///////////////////////////////////////equals///////////////////////////////////////
public class Equals extends Object {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
//equals对于值类型 比较的是两个变量的值是否相同,即栈中的内容是否相同。
int s3 = 10;
int s4 = 10;
System.out.println(s1 == s2);
Var var = new Var();
Var2 var2 = new Var2();
//equals对于引用类型 比较的是两个对象的内容是否相同,即堆中的内容是否相同。(无论你是否重写了equals)
//下面的var.s3和var2.s3是相同的类型,都是字符串类型,而且字符串缓冲池中的内容是相同的
System.out.println(var.s3.equals(var2.s3));//true
//下面的var和var2是不同的类型,它们两个都不是字符串类型,一个是var类型,一个是var2类型。
//类型已经不同了。堆中的内容肯定不一样
System.out.println(var.equals(var2));//true
}
}
class Var {
String s3 = "ssss";
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (obj instanceof Var) {
Var other = (Var) obj;
return this.s3 == other.s3;
}
return false;
}
}
class Var2 {
String s3 = "ssss";
}
------解决方案--------------------
楼主立即有错误,Var 和 Var2是不同的类。怎么可以让他们生成的对象相等呢,
应该是Var var1 = new Var();
Var var2 = new Var();
比较这俩个才可以嘛。