java中Object是所有类的父类,这句话就不多做解释。但是Object中到底有哪些我们常用的方法呢?
1. public native int hashCode();
这个方法是一个native方法,也就是说它是用C/C++完成,返回一个int类型的哈希码,这个hashcode用来干什么呢?用来标注这个对象的唯一性。
这里doc上有两句话这么描述:
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。
有兴趣的同学可以研究一下hash的问题,如果是计算机专业的应该还记得hash是怎么回事!
2.public boolean equals(Object obj)
根据上面的一句话我们可以知道这个equals比较的就是hashcode。
但是String中比较的却是字符串的内容,这是因为String覆写了equals方法。所以String和StringBuffer的equals是不同的。
3. protected native Object clone() throws CloneNotSupportedException;
clone方法在doc中最值得注意的一句话是;
首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。
这句话明确的告诉了我们什么叫做浅表复制,和深层复制。对于一些问题的理解很有帮助。
这里插入一个创建模式:原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
就是使用clone()方法完成的。
4.public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
如果没有重写这个方法,那么返回的就是个classname@hashcode的形式。
其他的就是3个多线程方法和一个protected的finalize()以及一个private的本地registerNatives方法。
当然还有一个非常重要的方法:public final native Class<?> getClass();
这个方法就能返回每个对象的Class对象。也就是该类的类对象。通过这个方法我们就能找得到对象的Class对象并且完成反射。
另外我们还能通过类的全名:Class.forName("jdbc.oracle.OracleDriver")来实例化类的Class对象。
或者我们使用 类.class也可以获得Class的实例化对象。
Java Object part1
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:JavaEE
下一篇:Java equal
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C语言学习Part1(1-1000行代码)
记录系统学习C语言的过程
操作符 八进制 #include -
ES6的Object.fromEntries()和Object.hasOwn()
Object.fromEntries()方法是Object.entries()的逆操作,用于将一个键值对数组转为对象。
键值对 Object.hasOwn() Object.fromEntries -
MCT part1
MCT part1
Intel 职场 休闲 MCT 移动软件 -
JAVA代码审计(part1)
JAVA代码审计
SQL html java 代码审计 -
JavaWeb(part1)--servlet
学习笔记,仅供参考,有错必究文章目录JavaWeb什么是Servlet举个例子Servlet执行原理S
java servlet javaee xml ide -
pyton笔记-part1
自己整理的笔记
python part1 -
PyTorch基础(part1)
学习笔记,仅供参考,有错必究文章目录PyTorch基础PyTorch CPU版安装导包构造tensortensor的基本
pytorch python 深度学习 数据 随机数 -
Apache服务介绍:part1
apache 主配置文件 SElinux 安全上下文 semanage
linux 配置文件 开机启动 apache 服务程序 -
SwiftUI 布局协议 - Part1
今年 SwiftUI 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。
SwiftUI iOS 掘金·金石计划 ci 子视图 -
pandas基础(part1)--Series
学习笔记,这个笔记以例子为主。开发工具:Spyder文章目录pandas介绍Series创建Series访问Serie
python 数据分析 数据 标量 日期处理