Java学习笔记【Object】

来源:互联网 发布:python数据科学导论 编辑:程序博客网 时间:2024/05/22 08:18

1、Object类

可以使用Object类型的变量引用任何类型的对象:
Object obj = new Employee("Harry Hacker", 3500);
Java中,只有基本类型不是对象,如数值,字符,布尔类型的值。所有的数组类型都扩展于Object类:
    Employee[] staff = new Employee[10];    obj = staff;        //OK    obj = new int[10];  //OK

2、equals方法

equals方法用于检测一个对象是否等于另一个对象; 判断是否两个对象有相同的引用。getClass()方法将返回一个对象所属的类,只有两个对象属于同一个类时,才有可能相等。判断是否相等示例:
    class Employee    {        public boolean equals(Object otherObject)        {            //快速判断            if (this == otherObject)             return true;            //当otherObject == null时 肯定不等            if(otherObject == null)             return false;            //不是同一个类,不等            if(getClass() != otherObject.getClass())            return false;        }        ...    }

3、相等测试与继承

Java规范要求equals有以下特性:1)自反性:对于任何非空引用x,x.equals(x) 返回true。2)对称性:对于任何引用x和y,当且仅当y.equals(x)返回true,x.equals(y)也应该返回true。3)传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true。4)一致性:x和y没有任何变化,反复执行x.equals(y)应该没有变化。5)对于任意非空引用x,x.equals(null)应该返回false。如果在子类中重新定义equals,就要在其中包含调用super.equals(other)。对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否相等。

4、hashCode方法

散列码是由对象导出的一个整型值。散列码是没有规律的。如果x和y是两个不同的对象,x.hashCode()和y.hashCode()基本不会相同。每个对象都有一个默认的散列码,其值为对象的存储地址。

5、toString方法

在Object中还有个重要的方法,就是toString方法,它用于返回表示对象值的字符串。调用x.toString()的地方可以用  "" + x  替代。
0 0