博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习——常用类的学习之Object
阅读量:3941 次
发布时间:2019-05-24

本文共 3136 字,大约阅读时间需要 10 分钟。

Java学习——常用类的学习之Object

我们都知道object类是我们所有类的顶层父类,那么今天我们就来学习一下objec类中的四个常用的方法

- public final Class getClass()
- public int hashCode()
- public String toString()
- public boolean equals(Object obj)

1.getClass()方法

官方文档给出的解释是:返回此 Object 的运行时类。

其实getClass()方法就是返回该类的字节码文件对象,具体是什么意思呢,我们来看一下代码:

Object obj = new Object();        Class clazz = obj.getClass();        System.out.println(clazz);        //输出结果:class java.lang.Object

在使用这个方法是我们应当注意,一个类new出不同对象是,对象于对象是不同的,但是他们的字节码文件对象都是一个,具体如下:

public static void main(String[] args) {
//对象1 Object obj = new Object(); //字节码文件对象1 Class clazz = obj.getClass(); //对象2 Object obj2 = new Object(); //字节码文件对象2 Class clazz2 = obj2.getClass(); System.out.println(obj==obj2); //false System.out.println(clazz==clazz2);//true }//输出结果:false// true
2.hashCode()方法

hashCode()方法官方文档给出的解释是:返回该对象的哈希码值。

不同对象的哈希码值是不一样的,相同对象的哈希码值是一样的:

public static void main(String[] args) {
//对象1 Object obj = new Object(); int i = obj.hashCode(); System.out.println(i); //对象2 Object obj2 = new Object(); int i1 = obj2.hashCode(); System.out.println(i1); } /* 输出结果:356573597 1735600054 */
3.toString()方法

toString()方法官方文档给出的解释是:返回该对象的字符串表示。

意思就是说,将该对象的地址值用字符串表现形式表现出来:

public static void main(String[] args) {
Object obj = new Object(); String s = obj.toString(); //获取该对象的地址值的字符串表现形式 System.out.println(s); }

我们还可以看一下toString()方法的源码:

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

其实它也就是将该对象的字节码文件对象的名称拼上一个“@”符号,再拼上一个哈希值返回。

一般情况下我们不会想要这种表现形式,我们都会选择重写toString方法,让它去帮我们返回该类的成员方法值,重写过后的toString方法如下:

@Override    public String toString() {
return "Teacher{" + "name='" + name + '\'' + ", age=" + age + '}'; }

当然我们还可以根据自己的需求去重写toString()方法,不用去按照它默认重写的效果,我们还需要注意String类中已经重写过toString()方法了,但是大部分的类和我们自定义的类并没有重写,如果我们有这方面的需求可以选择自己重写toString()方法

4.equals()方法

equals()方法官方文档给出的解释是:指示其他某个对象是否与此对象“相等”。

意思就是比较两个对象是否相等。

public static void main(String[] args) {
Object obj = new Object(); Object obj2 = new Object(); //用“=”比较两个对象是否相等 System.out.println(obj == obj2); //用equals方法比较两个对象是否相等 boolean b = obj.equals(obj2); System.out.println(b); } /* 输出结果:false false */

结果都是false,我们可以看下equals()的源码:

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

这样我们就可以看出,原始的equals()方法与“==”所起到的作用是一样的,那么为什么又会有equals()方法呢?

其实,equals()方法不重写之前和 双等号都是比较对象的地址值。我们就想到,重写equals()方法,让他去比较对象的值而不是地址值,那么重写过后的equals()方法就诞生了:

@Override    public boolean equals(Object o) {
//判断是不是该对象本身,如果是直接返回true if (this == o) {
return true; } //判断传过来的对象是不是空,或者字节码文件是否一样 if (o == null || getClass() != o.getClass()) {
return false; } //将传来的对象向下转型 Student student = (Student) o; //判断传来的对象的成员变量值是否与其相同 return age == student.age && Objects.equals(name, student.name); }

转载地址:http://nxiwi.baihongyu.com/

你可能感兴趣的文章
kvm&xen挂载镜像文件
查看>>
华为路由器配置NAT使内网用户通过外网IP地址方式访问内网服务器示例
查看>>
virt命令
查看>>
15个保障服务器安全的方法:
查看>>
在VMware Workstation 中部署VCSA6.5
查看>>
openstack&ceph
查看>>
ME60 双机热备 奇偶mac负载分担
查看>>
oracle11G安装en
查看>>
关于丢失或者损坏etc/fstab文件后
查看>>
VMware-ESXi-6.5 集成第三方驱动方法
查看>>
Oracle RAC on vSphere 安装手册v2
查看>>
V2V迁移
查看>>
BFD
查看>>
docker网络
查看>>
锐捷交换机的多对多镜像口
查看>>
Linux系统修改编码
查看>>
word文档不能显示图片的处理
查看>>
linux的多桌面环境Xephyr
查看>>
初探debian桌面的管理启动
查看>>
七层协议图
查看>>