JAVA源码阅读之----Object (1)

在 Object 源码中

方法一: registerNatives();
第一行有一个 native修饰的没有大括号的方法.
这里native表示该方法的实现不在本文件中,而是由其它语言(例如C,C++)编写实现的.

private static native void registerNatives();
static {
   registerNatives();
}

注意,上面代码中此方法为静态私有方法,通过类的静态代码块执行.为JAVA程序最开始执行的方法,且程序运行期间只会执行一次的方法.

方法二:getClass();

public final native Class<?> getClass();

结合第一个方法所讲,该方法也是由其它语言编写实现的,为获得类的字节码文件方法.

方法三:hashCode();

  public native int hashCode();

该方法用一个32位整数来代表该类位于内存中的位置(非真实地址).子类均可以进行重写.该方法的主要作用是判断两个对象是否一致.

方法四:equals(Object obj);

 public boolean equals(Object obj) {
    return (this == obj);
 }

该方法用来判断两个对象是否一致,JAVA中默认是比较两个对象的地址是否相同.子类若需要使用建议覆盖equals与hashCode方法.JAVA中所有对象比较是否相同均建议使用equal,否则可能造成意想不到的错误.例如Integer对象不建议使用==进行判断.

方法:clone();

protected native Object clone() throws CloneNotSupportedException;

该方法作用克隆该类.子类如需使用建议覆盖.且该克隆应该为深度复制而非浅复制

方法:toString();

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

该方法为以字符串形式表示字符串,默认展示类的内存地址(伪地址)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值