提问

Object类是什么?

Object是超类,基类,是所有类的直接或者间接父类,位于最顶端

我们可以随便看一个类的API

Class Math

java.lang.Object

java.lang.Math

任何类如果没写extends的话,都默认集成Object类,所以他们也就拥有了Object类的所有方法

Object类可以存储任何对象

如果是作为参数 那么便可以接受任何对象

如果作为返回值 可以返回任何对象

getclass方法

先看一个程序

结果

运行结果返回的到底是什么?

getclass方法拿到的是一个对象,比如上面这个程序,我们就通过getclass方法拿到了tesk1这个对象,拿到这个对象后,我们就可以访问连得方法

toString方法

方法定义 public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

先看程序

运行结果

toString方法返回的是@加上哈希码值(但是哈希码值被转成了十六进制)

然而,当我们重新toString方法后,他又会返回什么呢

结果

我们可以看出,toString方法默认返回的是哈希码值,如果我们重写了toString方法,他便按照重写后的规则进行输出

hashCode(){}

定义:返回对象的哈希码值,是根据对象的地址,字符串或者数字使用hask算法计算出来的int类型的数值

结果

返回的是一个int类型的数字,如果对象相同,那么他们的哈希码值同样也相同

finalize()

定义: 当对象被判定为垃圾对象时,由JVM自动条用次方法,用以标记垃圾对象进入回收队列

什么是垃圾对象?创建的引用没有被对象对象成功引用,就称为垃圾对象

如下面这个

new Tesk("初d尘",12 );便是一个垃圾对象

自动回收机制: JVM的内存耗尽,一次性回收所有的垃圾对象

手动回收机制: 使用System.gc();通知JVM执行垃圾回收

调用System.gc()不一定就能立马回收,可能程序还在运行,也有可能其他因素

下面是一个垃圾回收程序

当有垃圾成功被回收是,就会在后台打印

System.out.println(name + "已经被回收");

运行程序

Javaobject等于空 java中的object_Javaobject等于空

不知道什么原因,运行时并没有出现意向中的结果

前两天使用JDK1.8还可以使用,换了版本后,这个方法被弃用了,