java学习日记11,object类的常见方法与static关键字

object类

object类是所有java类的根父类,如果在一个类的声明中未使用extends关键字指明其直接父类,则默认父类为java.lang.Object类。
故object类中的方法具有通用性,常见方法有:
equals() :判断是否相等(默认比较的是引用对象是否一致,可通过重写来比较对象的内容是否一致)
toString() :返回该对象的字符串表示。
getClass() :返回此 Object 的运行时类。
hashCode() :返回该对象的哈希码值。
clone() :创建并返回此对象的一个副本。
finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
wait() :在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
notify():唤醒在此对象监视器上等待的单个线程。
notifyAll():唤醒在此对象监视器上等待的所有线程。

equals()方法与 “==” 的比较

== :可用于比较基本数据类型变量和引用数据类型变量。
1、如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同,比如int与double,int与char)
2、 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体。

equals:只适用于比较引用数据类型。
1、Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体。
2、像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。
3、自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对Object类中的equals()进行重写。

tostring()方法

1、当我们输出一个对象的引用时,实际上就是调用当前对象的toString()
2、Object类中toString()的定义:
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}
3、像String、Date、File、包装类等都重写了Object类中的toString()方法。 使得在调用对象的toString()时,返回"实体内容"信息
4、 自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"

static关键字

当一个变量用static声明时,称其为静态变量,由该类的所有对象所共享。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。
① 静态变量随着类的加载而加载。可以通过"类.静态变量"的方式进行调用。
② 静态变量的加载要早于对象的创建。
③ 由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中。

当一个方法用static修饰时,称其为静态方法。
① 随着类的加载而加载,可以通过"类.静态方法"的方式无须创建对象而直接进行调用。
②静态方法中,只能调用静态的方法或属性。非静态的方法与变量的加载在对象创建之后,而静态方法随类的加载而加载,在对象创建之前,先加载的不能调用还未加载的(父亲不能找儿子借钱,因为可能对象都还没有呢。。)。
非静态方法中,既可以调用非静态的方法或属性,也可以调用静态的方法或属性。

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页