日期:2014-05-20 浏览次数:20822 次
///////////////////////////////////////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();
比较这俩个才可以嘛。