自学java总结----equals

自学java总结----equals

在java中一般不使用“==”而使用“equals”来比较两个值是否相等。

在java中使用“==”是指左右两边所指向的内存地址相同。equals用于比较引用对象值是否相同。equals不是final方法所以可以被重写。

由于equals的参数是对象,所以不引入任何包时,equals依旧比较的是对象是否相同而不比较其值。但当引入java.io.file,java.util.Date,java.lang.string,包装类(Integer,Double等)时,equals用于当对象类型和值一致返回true。

--------------------------------------------------------------------------------------------------------------------------------------

//equals方法及如何覆盖

public class L3_1 {

public static void main (String[] args)

{

B b1 = new B(20);

B b2 = new B(20);

System.out.println(b1==b2);//==比较的内存是内存地址,而不是对象中的具体属性

System.out.println(b1.equals(b2));//因为equals的参数类型为object,所以比较的还是内存地址

C c1=new C(10);

C c2=new C(10);

System.out.println(c1.equals(c2));

}

}

class B

{

private int i;

B(int i)

{

this.i=i;

}

public boolean equals(B b2)

{

//覆盖后的equals方法比较的不再是比较内存地址,而是根据自己的需求来定

if(this.i==b2.i )

return true;

else

return false;

}

}

class C extends B

{

//多态:在C类中使用的只能是从B类中继承的方法和变量

private int j;

C(int j)

{

super(j);

this.j=j;

}

public boolean equals(B b2)

{

//要使用B自己的j变量需要重写equals方法

C c=(C)b2;

if(this.j==c.j)

return true;

else

return false;

}

}