当前位置: 首页 > article >正文

[java基础揉碎]Object类详解

目录

equals方法:

hashCode:

toString:

finalize:


 

equals方法:

==和equals对比

1.==: 既可以判断基本类型,又可以判断引用类型

2.==: 如果判断基本类型,判断的是值是否相等。示例: int i=10; double d=10.0;

3.==:如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象

1.equals:是Object类中的方法,只能判断引用类型 

2.默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。比如 Integer,String[看看String 和 Integer的 equals 源代码]

 [java基础揉碎]idea怎么查看jdk源代码-CSDN博客

this == obj 就是说如果调用equals的这个当前对象就是传进来的这个对象(地址), 就返回true

 


hashCode:

[java面试题]为什么同一个对象他的eques和hashCode都必须相等_为什么equels相同哈希值就相同?-CSDN博客

下例中两个不同对象的hashCode是不同的: 

 如果指向同一对象, 那么是相同的:


toString:

object默认输出的: 

例如以下这个类没有重写toString方法默认走的就是Object的类 

打印得到的值: 

 以下可以看到确实是hashCode转成的十六进制的值

 重写之后默认是把对象的属性值输出, 也可以定制

 


finalize:

 new了一个对象, 这个对象此时有一个引用指向了一个地址, 当等于null时, 便没有了引用, 此时car对象就是一个垃圾 , 垃圾回收器会回收(销毁)这个对象, 销毁前会调用这个对象的finalize方法:

重写了finalize后: 

 在执行发现没有调用finalize里面的内容是怎么回事, 是因为垃圾回收器什么时候回收不是对象一变成垃圾就立马回收的,  而是有一个垃圾回收的算法

 我们可以通过System.gc()主动触发, 但是这个触发也有可能不生效的, (好比保洁阿姨正常是5点打扫卫生, 但是你觉得太脏了提前打电话叫了保洁阿姨, 此时如果保洁阿姨有时间可能立马就过来打扫, 如果此时保洁阿姨在打扫其他地方, 她可能就不过来了, 或者她就是没到点不过来) 所以说它还取决于系统的其他运行

 可以看到触发了:

但是调用过程可以看到, 掉了gc后, 他不会主动阻塞到这里,  先执行了"程序退出了....", 在执行了finalize里面重写的内容:

 


http://www.kler.cn/news/272973.html

相关文章:

  • web蓝桥杯真题:成语学习
  • C++容器适配器与stack,queue,priority_queue(优先级队列)的实现以及仿函数(函数对象)与deque的简单介绍
  • XSS基础知识
  • C# 如何解决主线程堵塞问题
  • 归并排序思路
  • el-select 选择后获取key 和label的值
  • STM32实验DMA数据搬运小助手
  • 使用JDK11字段http客户端发送http请求
  • CentOS 7 基于开源项目制作openssh 9.7p1二进制rpm包(内含ssh-copy-id、显示openssl版本信息)—— 筑梦之路
  • 什么是浅拷贝和深拷贝
  • 位运算,LeetCode 2749. 得到整数零需要执行的最少操作数
  • 全网最全的幻兽帕鲁服务器搭建教程——阿里云保姆级教程
  • 【小迪安全】学习cho1
  • github 中的java前后端项目整合到本地运行
  • 排序算法:快速排序(递归)
  • C语言技能数(知识点汇总)
  • C#,数值计算,数据测试用的对称正定矩阵(Symmetric Positive Definite Matrix)的随机生成算法与源代码
  • 第4关:输入输出
  • 【数学】第十三届蓝桥杯省赛C++ A组/研究生组《爬树的甲壳虫》(C++)
  • 十四届蓝桥杯省赛Java B组 合并区域