java中Object是所有类的父类,所有类的对象都是Class的实例

java中Object是所有类的父类,这句话就不多做解释。但是Object中到底有哪些我们常用的方法呢?
[i][b]1. public native int hashCode();[/b][/i]
这个方法是一个native方法,也就是说它是用C/C++完成,返回一个int类型的哈希码,这个hashcode用来干什么呢?用来标注这个对象的唯一性。
这里doc上有两句话这么描述:
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。
有兴趣的同学可以研究一下hash的问题,如果是计算机专业的应该还记得hash是怎么回事!

[i][b]2.public boolean equals(Object obj)[/b][/i]
根据上面的一句话我们可以知道这个equals比较的就是hashcode。
但是String中比较的却是字符串的内容,这是因为String覆写了equals方法。所以String和StringBuffer的equals是不同的。

[i][b]3. protected native Object clone() throws CloneNotSupportedException;[/b][/i]
clone方法在doc中最值得注意的一句话是;
首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。
这句话明确的告诉了我们什么叫做浅表复制,和深层复制。对于一些问题的理解很有帮助。
这里插入一个创建模式:原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
就是使用clone()方法完成的。
[i]
[b]4.public String toString()[/b][/i] {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
如果没有重写这个方法,那么返回的就是个classname@hashcode的形式。


其他的就是3个多线程方法和一个protected的finalize()以及一个private的本地registerNatives方法。


当然还有一个非常重要的方法:[i][b]public final native Class<?> getClass();[/b][/i]
这个方法就能返回每个对象的Class对象。也就是该类的类对象。通过这个方法我们就能找得到对象的Class对象并且完成反射。
另外我们还能通过类的全名:Class.forName("jdbc.oracle.OracleDriver")来实例化类的Class对象。
或者我们使用 类.class也可以获得Class的实例化对象。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值