跳至主要內容

Object 类

T4makojava基础语法java大约 2 分钟

Object 类

java.lang.object类

  • Object类是所有Java类的根父类
  • 如果在类的声明中未使用extends关键字指明父类,则默认父类为Object类
  • Object类中的功能(属性、方法)具有通用性
    Oobject类只声明了一个空参的构造器

1、==与equals

==:运算符

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

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

如果比较的是引用数据类型,比较地址值是否相等

注:==符号使用时,必须保证符号左右两边的类型一致

int i = 10;
int j = 10;
double b = 10;
char c = 10;
char p = 65;
char q = 'A';
System.out.println(i==b); //true
System.out.println(i==c); //true
System.out.println(p==q); //true

equals()方法的使用

  • 是一个方法,而非运算符
  • 只能适用于引用数据类型
  • Object类中equals()的定义:
public boolean equals(Object obj){
    return (this == obj);
}

说明:Object类中的定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同

  • 像String、Date、File、包装类等都重写了Object类中equals的方法,重写以后比较的不是两个引用的地址是否相同,而是比较两个队形的实体内容是否相同。

3、自定义类重写equals()方法

通常情况下,我们自定义的类如果使用equals()的话,也通常比较两个对象的“实体内容”是否相同。那么就需要对Object类中的equals()进行重写。

//手动实现equals的重写
public boolean equals(Object obj){
    if(this == obj){
        return true;
	}
    if(obj instanceof Customer){
        Customer cust = (customer)obj;
        //比较两个对象的每个属性是否都相同
        if(this.age == cust.age && this.name.equals(cust.name)){
            return true;
        }
    }
    return false;
    }
}
//自动生成equals方法

注:任何情况下,x.equals(null)返回都是false
x.equals(和x不同类型的对象)返回都是false

2、ToString()的使用

  • 当输出一个对象的引用(不是null)时,实际上调用当前对象的toString()方法
Customer cust1 = new Customer("Tom",21)
//输出相同
System.out.println(cust1);
System.out.println(cust1.ToString)
  • Object中toString()的定义:
public String toString(){
	return getClass().getName()+"@"+Integger.toHexString(hashCode());
}
  • 像String、Date、File、包装类等都重写了Object类中的toString()方法。使得在调用对象的toString()时,返回“实体内容”信息
  • 自定义类也可以重写toString方法,当调用此方法时,返回对象的实体内容
//重写toString()方法
//手动重写
public String toString(){
    return "Customer[name="+name+,",age="+age+"]";
}
//自动重写
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5