Object类与常用类
Object
Object类是Java中所有对象的父类,相当于树结构中的根节点ROOT;如果一个类没有明确的标明继承自哪个类,都默认继承自Object类。所以,Java中所有的对象都能赋值给Object类型的引用(多态)。其次,由于子类中能够继承父类中的公开方法。因此,Object 类中所有的公开方法都能被子类继承。也就是说,Object 类中的公开方法,是 Java 中所有对象都拥有的方法。
接下来看下Object类中有哪些Java对象常用的公开方法。
1.finalize(完成,结束)
当内存不够使用时,JVM会对内存中不再使用的对象进行垃圾回收工作,方法是调用对象的finalize方法,腾出相应的空间来。注意,这里调用finalize的时机并不是对象成为垃圾对象的时刻;而是在内存不够的时候,才会去调用,在对象不再使用成为垃圾对象到进行垃圾回收中间的时间是不确定的,具体要看内存资源的使用情况,综上所述,我们不应该在 finalize 中写上释放资源的代码。
2.getClass(返回对象的实际类型)
instance of关键字也可以返回对象的实际类型,但其包含了多态,在某些场合可能显得不严谨;getClass返回对象的实际类型并不包含多态。
3.equals(注意:从Object类中继承的原生equals方法中就是使用双等于判断引用地址的,某些情况下需要覆盖equals方法才可以比较对象的内容,而不是引用地址)
equals用来判断两个对象的内容是否相等。
1)对比‘==’,双等于用来判断对象的引用地址是否是同一个。
2)特殊场景需要覆盖原生的equals方法,覆盖时需要注意:
首先与自己判重
然后判断做比较的对象是否为空
判断两个对象的实际类型
强制转换成相同对象类型
依次比较对象属性是否一致
4.toString(注意:没有覆盖时toString方法返回类名+内存地址,我们大多数时候是需要覆盖这些原生类再使用的)
1)String 类型与任何其他类型相加,结果都是String 类型(包括基本类型和对象类型)。可以理解为toString方法的自动类型提升(转换),提升(转换)的方式就是调用对象的toString方法获取其返回值。
--------
包装类
我们知道Java中常用的数据类型有基本类型和对象类型;我们也知道Object是所有对象的父类,能够处理对象类型。但我们是否可以想办法让Object也能够处理基本类型的数据呢?
包装类应运而生,包装类可以把基本类型的数据包装成对象类型的数据,从而让Object类统一管理。
包装方法:基本类型首字母大写就是sun公司提供的封装好的包装类。
包装类和基本类型的转换:利用构造方法
举个栗子:
int i1 = 10; Integer ii1 = new Integer(i1); // 基本类型转包装类型
int i2 = ii1.intValue(); // 包装类型还原基本类型,调用包装类的intValue方法即可。
除此之外还有字符串与基本类型和包装类型之间的转换可以了解下:
String str = "123"; Integer ii2 = new Integer(str); //字符串转包装类,同样使用包装类构造器。
String str2 = ii2.toString(); // 包装类还原字符串,使用包装类的toString方法即可。
// 字符串转基本类型的方法有两种,其中一种我们之前提到过,就是String类型的加法特性
int i = 10; String str3 = “ ”+i; // 空字符串加上基本类型数据结果都会变成(自动提升)字符串类型。
// 第二种方式是使用String类的valueOf方法(static方法,可由类名直接调用)
String str4 = String.valueOf(i);
// 字符串转化为基本类型,可以调用Integer 类的 parseInt 方法,把字符串转化为 int。
int i = Integer.parseInt("123");
JDK5.0 新特性:自动封箱拆箱,即在 JDK5.0 中,由系统自动完成基本类型和包装类之间的转换。