JAVA进阶3.2——Equals方法(2)
2016-09-17 14:10
363 查看
Equals方法在一般情况下都需要覆盖成自己想要的方法。而且配合多态可以实现强大的“比较”功能。可以比较类中的任何数据,可以根据自己的需求来定义两个对象是否相等的条件。
使用Equals方法时一定要重写,子类继承之后也要重写,要不然就和“==”号没啥区别了。
public class Test
{
public static void main(String[] args)
{
B b1=new B(20);
B b2=new B(20);
System.out.println(b1.equals(b2));
C c1=new C(10);
C c2=new C(10);
System.out.println(c2.equals(c1));
}
}
class B
{
private int i;
B(int i)
{
this.i=i;
}
//覆盖后的equals方法比较的不再是两个对象的内存地址,而是根据自己的需求来决定。
//本例中比较的是变量i的值,当两个对象的i都等于20,此时两个对象的比较结果返回了true。
public boolean equals(B b2)
{
if(this.i==b2.i)
return true;
else
return false;
}
}
class C extends B
{
private int j;
C(int j)
{
super(j);
this.j=j;
}
public boolean equals(B b2)
{
C c=(C)b2;
if(this.j==c.j)
return true;
else
return false;
}
}
使用Equals方法时一定要重写,子类继承之后也要重写,要不然就和“==”号没啥区别了。
public class Test
{
public static void main(String[] args)
{
B b1=new B(20);
B b2=new B(20);
System.out.println(b1.equals(b2));
C c1=new C(10);
C c2=new C(10);
System.out.println(c2.equals(c1));
}
}
class B
{
private int i;
B(int i)
{
this.i=i;
}
//覆盖后的equals方法比较的不再是两个对象的内存地址,而是根据自己的需求来决定。
//本例中比较的是变量i的值,当两个对象的i都等于20,此时两个对象的比较结果返回了true。
public boolean equals(B b2)
{
if(this.i==b2.i)
return true;
else
return false;
}
}
class C extends B
{
private int j;
C(int j)
{
super(j);
this.j=j;
}
public boolean equals(B b2)
{
C c=(C)b2;
if(this.j==c.j)
return true;
else
return false;
}
}
相关文章推荐
- Java进阶---equals()方法总结
- Java进阶:深入equals方法对象相等比较
- Java进阶 —— 覆盖equals方法的技巧
- Java进阶---equals()方法总结
- JAVA进阶3.1——Equals方法(1)
- Java equals方法实现总结[原]
- 如何在Java中避免equals方法的隐藏陷阱
- Java语言深入:深入研究Java equals方法,equals,==,equals用法
- 关于Java equals()方法的几点疑问
- 如何在Java中避免equals方法的隐藏陷阱
- java中的equals()方法
- java中equals方法和“==”的比较
- Java中重写equals方法的步骤(个人小结)
- How to Write an Equality Method in Java(之三)Java中如何写equals()方法
- 深入java 的equals方法和hashCode方法
- 深入Java的equals方法
- JAVA进阶--五种提高 SQL 性能的方法
- java 中 == 和 equals()方法的 比较
- 深入java的equals方法,怎么比较两个对象的内容是否相等?对象的内容指的是什么?
- java中equals方法的用法以及==的用法