Object类的使用Object类

Object类中的方法可以在网上搜索得到

  • Object类是所有java类的父类

  • 如果类在声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类

  • Object类中的功能(属性、方法)具有通用性。

    属性:无

    方法:equals() / toString() / getClass() / hashCode() /clone() / finalize() / wait() / notify() / notifyAll()

  • Object只有一个空参构造器


==和equals()的区别

1、 ==的使用:

  1. 可以使用在基本数据类型变量和引用数据类型变量中

  2. 如果比较的是基本数据类型的变量,比较的是两个变量保存的数据是否相等(不一定要类型相同)

    如果比较的是引用数据类型变量,比较的是两个变量的地址值是否相同,即两个引用是否指向同一个对象实体。

2、equals()的使用:

  1. 是一个方法,而非运算符

  2. 只能应用于引用数据类型

  3. Object类中equals()定义:

    pubulic boolean equals(Object obj){

    ​return (this == obj)

    }

    //说明:Object类中定义的equals()和==作用是相同的,即两个引用是否指向同一个地址

  4. 像String、Date、File、包装类都重写了equals()方法,即比较的是两个对象的”实体内容”是否相同

  5. 通常情况下,我们自定义的类如果调用equals()方法,通常是比较对象的”实体内容”是否相同,因此需要对Object类的equals()方法进行重写。【一些编译器可以自动生成重写的代码】

Customer cust1 = new Customer("TOM",21);Customer cust2 = new Customer("TOM",21);String str1 = new String("aaa");String str2 = new String("aaa");System.out.println(cust1.equals(cust2));//flaseSystem.out.println(str1.equals(str2));//true

基本数据类型变量

  • 在内存种存储的是一个基本类型值。
  • 可以在栈中直接分配内存
  • 例如 int a=1; 变量a的值就是int值1;

引用数据类型变量

  • 对应内存所存储的值是一个引用,是对象的存储地址。
  • 对象的引用在栈中,对象实际存放在堆中。
  • 例如 Circle circle = new Circle(9)【参数表示半径】; 变量circle 的值保存的是一个引用,它指明这个Circle对象的内容存储在内存的什么位置。

toString()方法

  1. 当我们输出一个对象的引用时就是调用当前对象的toString()
  2. Object类中toString()定义

public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}

  1. 像String、Date、File、包装类都重写了toString()方法,使得调用toSting()方法时,返回”实体内容”信息
  2. 自定义类也可以重写toString()方法,当调用此方法时,返回对象的”实体内容”【一些编译器可以自动生成重写的代码】