Object类

类Object是类层次结构的根。 每个类都有一个Object作为超类。 所有对象,包括数组,都实现了这个类的方法。

registerNative()方法

要为你自己的类注册本地函数,必须RegisterNatives从你自己的库中的本机代码调用JNI函数,让JVM找到你的本地函数。

 

getClass()方法

返回此Object的运行时类。

Number n = 0;

Class<? extends Number> c = n.getClass();

抽象类Number是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long和Short类的父类,表示可转换为基本类型byte 、 double 、 float 、 int 、 long和short数值。

其中Number 是对调用getClass的表达式的静态类型的擦除,此代码片段中不需要强制转换。

返回class java.lang.Integer

 

hashCode()方法

返回对象的哈希码值。

如果通过equals方法比较的两个对象返回true,那么他们的哈希值也是一样的。

 

equals()方法

equals方法在非空对象引用上实现等价关系:
1.它是自反的:对于任何非空引用值x , x.equals(x)应该返回true 。
2.它是对称的:对于任何非空引用值x和y , x.equals(y)应返回true当且仅当y.equals(x)返回true 。
3.它是可传递的:对于任何非空引用值x 、 y和z ,如果x.equals(y)返回true并且y.equals(z)返回true ,那么x.equals(z)应该返回true 。
4.它是一致的:对于任何非空引用值x和y , x.equals(y)多次调用始终返回true或始终返回false ,前提是没有修改对象的equals比较中使用的信息。
5.对于任何非空引用值x , x.equals(null)应该返回false 。

返回值:如果此对象与 obj 参数相同,则为true ; 否则为false 

通常为了需求,我们要重写equals方法和hashcode方法,如对象的实例数据是相等的,此时不需要比较对象在内存中的地址。

 

clone()方法

用于创建并返回此对象的副本。

如果克隆的对象的类没有实现接口Cloneable,则会抛出CloneNotSupportedException异常。例所有数组都实现了此接口,数组类型T[]的clone方法的返回类型是T[],T是任何引用或原始类型 。否则将对象的相应字段的内容赋值给此对象,因clone()实现的是浅拷贝,拷贝的是引用地址并没有为引用对象分配新的内存,而深拷贝则会开辟新的内存。

 

toString()方法

该字符串由对象是其实例的类的名称、at-sign 字符 ` @ ' 和对象哈希码的无符号十六进制表示组成。

即返回一个等于以下值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode());

返回对象的字符串表示,易于人们的阅读。

 

上一篇:面试官:说说Object类下面有几种方法呢?


下一篇:重写equals方法的安全写法