equals()--java11(07/12/2015)

private Account[] accounts;//属性声明为数组

public Customer(String f, String l ,Account[] accounts ){//构造函数没有声明数组

firstName = f;

lastNameString = l;

this. accounts = new Account[5];//构造函数中的初始化

}'

Object类是所有java类的根父类。

对于符号“==”:

1、基本数据类型。根据基本数据类型的值判断是否相等,相等返回true,否则返回false。

两种数据类型可以不同,在不同的情况下也可以返回true。

2、引用数据类型比较引用类变量的地址是否相等。


重写equals()方法的使用场合:由于==和equals比较的都是两个变量或者对象的地址值,但是有些情况下,我们只需要知道两个对象的内容是否相等就好了,而不必仅通过地址就给其下结论,这个是时候就需要重写equals方法,而不是直接调用object的equals方法。

注:对于集合,有一个接口set,它有一个实现类HashSet,这个集合可以往里面存储元素,但其只能存放相同的元素,而对于元素是否相同的判断,便需要使用equals方法。所以当一个类需要往集合当中存放时,该类一定要重写object的equals方法。

对于equals():

1、只能处理引用类变量

2、在object类,发现equals()仍然比较的是两个引用变量的地址是否相等。

3、像String 包装类 File类 Date类,这些重写object()的equals()方法,比较的是两个对象的“实体内容”是否相等。

4、若想比较两个对象的属性是否相等,则需要重写object()类的equals()方法。              

例如:手动生成

public boolean equals(Object obj){

      if(this == obj){//当前对象的引用与形参是一样的。两个都是一个地址值。

             return true;}

      if(obj instanceof Person){//判断形参obj是否是order的一个实例

               Person p = (Person)obj;

               return this.name == p.name && this.age == p.age;

        }else{

               return false;}

手动生成并不严密,开发的时候,可以自动生成。

你可能感兴趣的:(equals()--java11(07/12/2015))