Object类随笔

来源:互联网 发布:求质数的最优算法 编辑:程序博客网 时间:2024/05/16 06:31

这里记录个人理解的随笔日记,如有理解错误,希望各位大神给予指出。

 

定义:

Object类是所有类的根类,当我们手动创建一个类时会默认的继承Object,除了手动继承了一个类,因为Java是不允许多继承的(会导致子类调用方法不明确)

 

方法:

1。public boolean equals(Object obj){

return (this == obj);

}

Object类内部对于两个对象的引用进行判断,一般我们都会进行重写这个方法(例:String类重写了这个方法,进行一个字符一个字符的判断)。

疑问:为什么Object类的equals方法不定义没抽象方法。

答:当定义为抽象方法时,所有定义的类必须实现这个抽象方法,对于有些自定义类我们不需要重写这个类的。

2。public native int hashCode();

这里涉及到native关键字,它代表本地的意思,也就是有系统本身进行功能的实现,程序无法查看该代码。例如在Windows系统中,首先交给JVM,然后交与C++进行实现,因为Windows系统由C++进行实现的。一般重写了equals方法后,hashCode()方法需要相应的重写。

 

3。public final native Class<?> getClass();

它返回的是一个Class类(当前运行所属的字节码文件,例:new Person().getClass(),那么当前字节码文件为:Person.class),这个类其实是我们所有.class文件抽象取共同拥有的东西。比如:名称,方法名等。,通过这些进行反编译。

字节码文件只在JVM启动时加载一次,所以new Person().getClass() == new Person().getClass()返回true,所有的对象指向同一个class文件;

 

4。public String toString(){

return getClass().getName()+"@"+Integer.toHexString(hashCode());

}

原创粉丝点击