Object类是所有Java类的根父类
如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类
1.Object的属性和方法:
自JDK1.0开始就是所有类的父类
属性:无
方法:
- equals():比较两个对象是否相等
- ==和equals的区别
- ==:是个运算符。可以使用在基本数据类型变量中和引用数据类型变量中
- 如果比较基本数据类型变量,就是比较两个变量保存的数据是否相等,且存在基本类型提升不一定要类型相同
- 如果比较引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
- 使用时,必须保证符号左右的变量类型一致
- equals:是个方法。只能适用于引用数据类型
-
Person p1=new Person(); Person p2=new Person(); System.out.println(p1.equals(p2)); // false
System.out.println(new String("aaa").equlas(new String("aaa"))); // true
-
Object这个类中equals源码和==的作用相同,比较地址值
- 而String这个类中的equals()方法进行了重写,此时比较的是两个对象的实体内容是否相等。其他如Date、File、包装类都重写了Object中的equals()方法
- 如何手动重写equals方法:
- 需求:需要比较两个对象的实体内容是否相等,需要重写Object的equals方法
-
// 构造器 public Person(String name,int age) { this.name=name; this.age=age; } // 重写equals方法 public boolean equals(Object obj) { if(this==obj) { return true; } if(obj instanceof Person) { Person m=(Person)obj; // 向下转型 // 比较两个对象的每个属性是否相同 return this.age==m.age && this.name.equals(m.name); } return false; }
- 使用:
Person p1=new Person("a",12); Person p2=new Person("a",12); System.out.println(p1.equals(p2)); // true Person p1=new Person("a",12); Person p2=new Person("b",12); System.out.println(p1.equals(p2)); // fals
- 自动重写:source>Generate HashCode() and equals()...即可自动生成equals方法
- null和所有的equals比较都是false
-
- ==:是个运算符。可以使用在基本数据类型变量中和引用数据类型变量中
- ==和equals的区别
- toString()
- 输出结果是地址值(虚拟的内存地址)。即输出一个对象的引用时,实际上就是调用当前对象的toString()方法
- 像String、Date、File、包装类等都重写了Object类中的toString()方法,使得在调用toString方法时,返回的时实体内容
- source>Generate toString()也可以自动生成对象的toString方法
- getClass()
- hashCode()
- clone()
- finalize()
- wait()
- notify()/notifyAll()