jdk源码解读-Object


1. 为什么lang包下的不需要导包

编译器会自动导入lang包下的类

2. registerNatives()

注册本地方法、native方法

3. getClass()

返回此 Object 的运行时类、native方法。这里返回运行时类的怎么理解呢,可以对比另一个 类名.class 来探究。

public class Parent {}

public class Son extends Parent{}


public void testClass(){
    Parent p = new Son();
    System.out.println(p.getClass());//输出结果:Class com.test.Son
    System.out.println(Parent.class);//输出结果:Class com.test.Parent
}

类名.class返回的是编译时就可知的类对象,而getClass是一个方法,是在程序运行过程中,获取该类的实际运行类对象

4. hashCode()和equals()

hashCode方法是返回对象的hashcode int值,是一个native方法;equals方法判断两个对象是否相等,equals方法的源码就是通过 == 来比较对象大小。

有三点需要注意:

  1. 对于hashcode方法,有一个常用约定:相等对象(equals调用结果为true)的两个对象,其hashcode的返回值必定相等;不相等的两个对象,对其调用hashcode方法,返回值也可能相等(跟hash冲突原理一样)。也因为这个约定,一般重写了equals方法都需要重写hashcode方法。
  2. 对于任何非空引用值 x.equals(null) 都应返回 false
  3. == 和 equals的区别。== 是java的操作符,返回一个boolean值,当基本类型使用 == 时,直接比较存储的值是否相等,当引用类型变量使用 == 时,比较的是引用类型变量的指针,当 == 两边指向的是同一对象才相等;object类的equals方法直接使用==,因此如果没有重写equals方法时,equals和 == 一样,比较的是引用类型变量指针的地址是否相等,对于像StringDate这种重写了equals方法的类,比较的是指向对象的内容。

5. clone()

返回一个该对象的拷贝对象。native方法

  1. clone是浅拷贝,所谓浅拷贝是拷贝该对象的值,对于基本数据类型拷贝的就是值,对于引用类型拷贝的是指针值(指向的对象的地址),也就是说拷贝对象和被拷贝对象里面的引用类型指向的还是同一个。
    在这里插入图片描述
    在这里插入图片描述
    相对于的深拷贝就是连同拷贝对象里面的引用类型也拷贝了一份新的对象,实现深拷贝可以有两种方式:里面的对象也实现CloneAble接口(不推荐);所有需要拷贝的类都实现序列化接口Serializable

  2. 需要拷贝的对象要实现CloneAble接口,如果不实现该接口,就会抛出CloneNotSupportedExceptionCloneAble接口是一个空接口,仅又来标记可以clone,实际的拷贝还是通过Object类实现的。

6. toString()

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

7. finalize()

垃圾回收时调用此方法,此方法一个对象只会执行一次。

8. wait()/notify()/notifyAll()

多线程通信

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
jdk-11-windows是指Java开发工具包(Java Development Kit)的第11个版本,适用于Windows操作系统。JDK是使用Java语言进行开发的应用程序和软件的环境,它提供了许多工具和功能,可用于编写、编译和运行Java程序。 JDK-11包含了许多新的特性和改进,使得Java编程更加方便和高效。其中一项突出的特性是JVM(Java虚拟机)的性能改进,它可以提供更快速和更高效的执行速度。其他一些特性包括G1垃圾回收器的增强和适用于观察、诊断和监控Java程序的Java Flight Recorder和Java Mission Control工具等。 对于Windows用户来说,JDK-11提供了易于安装和使用的Windows平台上的开发环境。它包括了JRE(Java运行环境)和用于开发、调试和测试Java应用程序的工具集。通过JDK-11,开发人员可以利用Windows操作系统的优势和特性,进行快速、高效和可靠的Java开发。 此外,JDK-11还提供了许多与安全性和稳定性相关的改进。它包含了新的安全性特性,可以帮助开发人员保护他们的应用程序免受潜在的安全威胁。另外,JDK-11还包含了一些稳定性改进,可以提高应用程序的性能和可靠性。 总之,JDK-11-windows是适用于Windows操作系统的Java开发工具包的最新版本。它提供了许多新的特性和改进,使得Java开发更加方便、高效和安全。对于Windows用户来说,使用JDK-11可以提供更好的开发体验,使他们能够更轻松地创建出优秀的Java应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值