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

【Java 人门 Day17】常用类篇(上):Object包装类,Java里的“老祖宗”和“伪装大师”!

家人们谁懂啊!Java里的 Object 类和包装类,简直是新手的“隐藏BOSS”,每次面试被问到 == 和 equals 的区别、自动装箱拆箱,都像被问住了,只能尴尬挠头。今天咱们就用唠嗑的方式,把这俩知识点扒得明明白白,看完保证你再也不被它们搞心态!

一、Object类:Java里的“老祖宗”,所有类的亲爹!

Object类,位于 java.lang 包中,堪称Java里的“老祖宗”!它是所有类的父类,不管你写什么类,默认都继承自Object,相当于所有类的“亲爹”。

- 就像你不管是谁,往上追溯都有个老祖宗,Java里的所有类,默认都继承了Object类的方法,直接就能用。

1. Object类里的“四大天王”方法

Object类里有几个核心方法,面试和开发都高频用到,咱们一个个唠:

(1) getClass() :判断对象“真实身份”的照妖镜

getClass() 方法会返回对象的真实类型,就像照妖镜一样,不管你用什么父类引用指向子类对象,它都能给你照出真实的“真身”。

- 开发里常用它来判断两个对象的类型是否一致,防止类型转换异常。

(2) hashCode() :对象的“身份证号”

hashCode() 方法会返回对象的哈希码值,相当于对象的“身份证号”,不同的对象,默认的哈希码值不一样。

就像每个人的身份证号,不同的人身份证号不同,不同的对象,默认的哈希码也不同。

(3) toString() :对象的“自我介绍”

toString() 方法会返回对象的字符串形式,相当于对象的“自我介绍”。

默认的 toString() 方法返回的是“类名@哈希码”,看着就像乱码,所以子类通常会重写这个方法,把对象的属性拼接成字符串返回,方便打印对象信息。

- 这样你打印 new Student() 的时候,就会输出清晰的对象信息,而不是乱码了。

(4) equals() :对象的“相亲现场”,和 == 有啥区别?

这是面试的高频考点!咱们先把 == 和 equals 掰扯清楚:

- Object类里的 equals() 方法,底层就是用 == 实现的:

public boolean equals(Object obj) {

return (this == obj);

}

- 但实际开发中,我们通常想比较对象的内容是否相同,而不是是不是同一个对象,所以子类要重写 equals() 方法。给你一个标准的重写模板:

(5) finalize() :对象的“遗言”,被回收前会被调用

finalize() 方法是JVM垃圾回收时自动调用的,相当于对象被回收前的“遗言”。

垃圾对象就是没有任何引用指向的对象,比如 Student s = new Student(); s = null; ,这时候原来的对象就成了垃圾对象。

​ JVM的垃圾回收器(GC)会自动回收垃圾对象,回收的时候会调用 finalize() 方法,但执行时机不可控,开发里一般不写重要代码,了解一下就行。

二、包装类:基本数据类型的“伪装大师”,把数据变成对象!

Java里的基本数据类型( byte 、 short 、 int 、 long 、 float 、 double 、 char 、 boolean ),本身不是对象,不能调用方法,也不能用在集合里,包装类就是它们的“伪装大师”,把基本数据类型包装成对象,让它们也能拥有对象的能力。

1. 八大基本数据类型对应的包装类

2. 数据之间的转换:int、Integer、String怎么互相转?

开发里经常要在这三种类型之间来回转,给你整理了常用的转换方式:

- int ↔ Integer :

​- int → Integer : Integer i = new Integer(12); 或者 Integer.valueOf(12);

​- Integer → int : int a = i.intValue();

​- String ↔ Integer :

​- String → Integer : Integer i = new Integer("123"); 或者 Integer.valueOf("123");

​- Integer → String : String s = i.toString(); 或者 s = i + "";

​- int ↔ String :

​- int → String : int a = 3; String s = a + "";

​- String → int : int a = Integer.parseInt("123"); (注意:字符串必须是纯数字,不然会报 NumberFormatException )

3. 自动装箱&自动拆箱:JDK5.0的“懒人福利”

JDK5.0之后,Java提供了自动装箱和自动拆箱功能,基本数据类型和包装类之间可以自动转换,不用手动new对象了:

- 自动装箱: int → Integer ,比如 Integer i = 12; ,编译器会自动帮你转成 Integer.valueOf(12);

​- 自动拆箱: Integer → int ,比如 int a = i; ,编译器会自动帮你转成 i.intValue();

面试必考点:Integer缓存池

Integer 类里有个缓存池,默认缓存了-128~127之间的整数,在这个范围内的 Integer 对象,会直接从缓存里拿,不会new新对象;超出这个范围,才会new新对象。

- 所以下面的代码结果是这样的:

今天先唠到这,Object类和包装类的套路你get到了吗?下一篇咱们继续扒String类、StringBuilder、StringBuffer和BigDecimal,这些开发里天天用的类,看完你就再也不会被字符串拼接、浮点数精度问题搞疯了!

http://www.rkmt.cn/news/1514667.html

相关文章:

  • 保姆级教程:从看懂原理图到用MaixPy配置K210任意引脚(以GPIO控制外设为例)
  • 从热失控到封装熔断:一个电源工程师的SOA“踩坑”实录与避坑指南
  • “大疆系”丰疆智能冲刺港交所,“给拖拉机装自动驾驶”生意前景几何?
  • 手把手教你免拆刷机:创维E900-S高安版刷当贝桌面保姆级教程(附固件包)
  • 2026年AI写作辅助平台全景评测:这5款工具如何提升论文写作效果
  • 2026年质量好的西安厨房推拉门定做/西安极窄推拉门批量采购厂家推荐 - 品牌宣传支持者
  • 数据出队模块的-ExeModule
  • 2026年聚氨酯制品选购实战指南:从材料参数到供应商能力全解析 - 优质品牌商家
  • 5个步骤掌握LaserGRBL:免费开源激光雕刻控制软件终极指南
  • Harness 中的会话压缩归档与懒加载
  • Java毕设选题推荐:基于 Java 的学生活动报名管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • UIDesign完整解析
  • 机器学习在拓扑分类中的捷径学习现象解析
  • 基于西门子plc的高炉运矿皮带拣铁装置的控制系统设计31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_可以扫码
  • 2026年声光报警器品牌厂家哪家靠谱?深度评测行业格局与技术趋势 - 优质品牌商家
  • 微信聊天记录导出完整指南:3步备份你的珍贵数字记忆 [特殊字符]️
  • 2026年知名的断桥铝门窗/山西断桥铝门窗/定制断桥铝门窗稳定供货厂家推荐 - 行业平台推荐
  • Android进程永生终极方案:基于Linux内核的黑科技保活技术突破
  • 2026年闪蒸干燥机品牌选择指南:多维度分析常州天掣、瑞博环保与成都尚林 - 优质品牌商家
  • paperxie 告别 Word 折磨!四千校模板 AI 一键规整论文格式,定稿不再卡版式
  • Java毕设选题推荐:基于 Java 的校园选课评价综合管理平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Arduino传感器信号不稳?可能是缺了这个RC滤波电路!从原理到代码的避坑指南
  • 2026年塑钢缠绕管制造厂实力之选:SRWPE市政雨污分流/高环刚度抗压/大口径加厚排水管,地埋耐腐蚀/小区改造/水利输水生产商精选 - 品牌发掘
  • 用assign搞定组合逻辑:从门电路到Verilog代码的保姆级映射教程
  • ABB 直流调速器 DCS800-S01-0405-05
  • 2026年优质篮球馆木地板行业观察:七家实力供应商多维度解析与案例参考 - 优质品牌商家
  • 【CSDN】----再踩坑!CSDN 专栏数量受限?等级积分提升攻略来了
  • allegro(cadence)PCB设计DRC分析
  • 华大HC32F460JETA点灯踩坑记:为什么我的LED不受控制?附官方库延时函数详解
  • 2026年广州温度传感器热电偶与测温方案甄选:K型、J型、PT100铂电阻及非标定制评估 - 品牌发掘