Object类是一个比较特殊的类,是所有类的超级父类,java中如果一个类没有用 extends关键字 明确指出继承于某个类,那么它默认继承Object类。这里主要总结Object类中的三个常用方法:getClass()、toString()、equals()。
getClass()
public class Dome {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Object[] arr=new Object[4];
arr[0]= new Object();
arr[1]= new String("ddd");
arr[2]= new Integer(22);
arr[3]= new Dome();
for (Object object : arr) {
System.out.println(object.getClass());
}
}
}
首先是我先创建了object类的一个长度为4的数组,也传入了一写常见的实例。
运行结果:class java.lang.Object
class java.lang.String
class java.lang.Integer
class Test.Dome
toString()
如果不重写类的toString方法,就会默认的输入类的16进制的哈希码
public class Dome {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Object[] arr=new Object[4];
arr[0]= new Object();
arr[1]= new String("ddd");
arr[2]= new Integer(22);
arr[3]= new Dome();
for (Object object : arr) {
System.out.println(object.toString());
}
}
}
运行结果:
java.lang.Object@7b1d7fff
ddd
22
Test.Dome@299a06ac
上面为什么能输出来 ddd和22呢,因为String类和Integer默认的重写了它们的toString方法。
equals()
我个人对equals方法和 "=="的之前理解是俩种的含义是一样的,可是运用到代码中发现截然不同,equals比较的是俩个值是否一样, 而俩个等于号是 比较的俩个对比的内存是否一致~
如:
>class Value
{
int i;
}
public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));//(1)flase
System.out.println(v1 == v2);//(2)true
}
}