【Java 人门 Day17】常用类篇(上):Object包装类,Java里的“老祖宗”和“伪装大师”!
2026/6/13 3:46:50 网站建设 项目流程

家人们谁懂啊!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,这些开发里天天用的类,看完你就再也不会被字符串拼接、浮点数精度问题搞疯了!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询