一、Object 类
java.lang.Object 是所有类的根父类,所有类默认直接或间接继承它,其中方法所有类均可使用。
1. getClass():返回对象实际类型,可判断两个对象类型是否一致。
2. hashCode():返回对象哈希码,不同对象哈希值一般不同。
3. toString():返回对象字符串描述,开发中建议重写,拼接对象所有属性。
4. equals()
◦ 原生实现等价于 ==,仅比较对象地址。
◦ 业务场景需重写,用于对比对象内容;重写流程:判断是否为同一对象 → 判断非空 → 判断类型一致 → 强转后逐属性对比。
5. == 与 equals 区别
◦ ==:基本类型比数值,引用类型比内存地址。
◦ equals:默认比地址,重写后对比对象内容。
6. finalize():JVM 垃圾回收时自动调用;可通过 System.gc() 手动提醒 GC,执行时机不可控,不建议编写核心逻辑。
二、包装类
将8种基本数据类型转为引用类型,位于 java.lang 包。
1. 对应关系:byte→Byte、short→Short、int→Integer、long→Long、float→Float、double→Double、char→Character、boolean→Boolean。
2. 类型转换
◦ 基本类型 ↔ 包装类:构造方法 / valueOf() / intValue() 等方法转换。
◦ 字符串 ↔ 数值类型:字符串转数字用 parseXXX(),纯数字字符串才可转换,否则抛出数字格式异常。
3. 自动装箱&拆箱(JDK5+)
◦ 装箱:基本类型直接赋值给包装类;拆箱:包装类直接赋值给基本类型。
◦ 整数缓冲区:Integer 缓存 -128 ~ 127 数据,该区间内对象复用,== 结果为 true,超出则新建对象。
4. 使用场景:实体类属性常用包装类,可通过 null 区分空值与有效数据。
三、String 字符串类(重点)
1. 创建方式
◦ 直接赋值 String s = "xxx":仅在字符串常量池创建1个对象。
◦ new String("xxx"):常量池、堆内存各创建1个对象。
2. 常用方法
◦ charAt():根据下标取字符,下标越界抛出异常。
◦ contains():判断是否包含子串;equals():对比字符串内容。
◦ length():获取字符串长度;trim():去除首尾空格。
◦ split():按照规则拆分字符串为数组。
3. 特性:不可变,字符串拼接会生成新对象,频繁拼接效率低;常量拼接编译期会直接优化。
四、可变字符串
1. StringBuilder(JDK5):可变字符序列,线程不安全、效率高。
2. StringBuffer(JDK1.0):可变字符序列,线程安全、效率偏低。
3. 通用核心方法:append() 实现字符串拼接,二者拼接效率远高于 String。
4. 三者区别:String 不可变、拼接慢;StringBuilder/Buffer 可变、拼接快,差异主要在线程安全。
五、BigDecimal 类
位于 java.math 包,用于浮点数精确运算,解决浮点计算精度丢失问题。
1. 推荐使用字符串形式构造对象。
2. 常用方法:add() 加、subtract() 减、multiply() 乘、divide() 除(可指定保留小数位数与四舍五入规则)。