Object类
是所有Java类的根父类。如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类。
public class Person {
//...
}
//等价于:
public class Person extends Object {
//...
}
public class ObjectTest{
public static void main(){
Order order = new Order();
System.out.println(order.getClass().getSuperClass());
}
}
class Order{}
// 输出:class java.lang.Object
Object 类中的功能(属性、方法)具有通用性
Object类只声明了一个空参的构造器
equals方法
== 和 equals 有什么区别
== 的使用情况:可以使用在基本数据类型变量和引用数据类型变量中。
基本类型比较值:只要两个变量的值相等,即为true。
引用类型比较引用(是否指向同一个对象):只有指向同一个对象时(地址值相等),==才返回true。
用“==”进行比较时,符号两边的数据类型必须兼容(可自动转换的基本数据类型除外),否则编译出错。
equals的比较的是什么
equals 是一个方法,而不是一个运算符。只适用于引用数据类型。
在没有重写equals前,比较的是对象的地址。
Person s1 = new Person("tom");
Person s2 = new Person("tom");
System.out.println(s1.equals(s2));
// flase
因为String类重写了Object的equals方法。比较的不是地址值,而是值。
String s1 = new String("tom");
String s2 = new String("tom");
System.out.println(s1.equals(s2));
// true
equeals重写
通常情况下,自定义的类如果使用equals的话,也通常是比较两个对象的“实体内容”是否相同,那么,我们就要对Object类中的equals()进行重写。
class Person{
String name;
int age;
@Override
public boolean equals(Object o){
if(this == o){
return true;
}
if(o instanceof Person){
Person p = (Person)o;
//比较每个属性
//if(this.age == o.age && this.name.equals(o.name)){
//return true;
//}else{
//false
//}
return this.age == o.age && this.name.equals(o.name)
}
return false;
}
}