Object类

介绍

java. lang .object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是0bject,
如果一一个类没有特别指定父类,那么默认则继承自0bject类。 例如:

  1. public class MyClass /*extends Object*/ {
  2. ...
  3. }

public String toString()

返回该对象的字符串表示。

下面Person类默认继承了bject类,所以可以使用object类中的tostring方法
string tostring() 返回该对象的字符串表示。

基础操作:直接toString会弹出这个重写方法

  1. /*
  2. 直接打印对象的地址值没有意义需要重写object类的tostring方法
  3. 打印对象的属性(name, age)
  4. */
  5. @override
  6. public String tostring()
  7. return " abc"
  8. }

进阶操作:alt+insert 选择toString()

  1. @verride
  2. public string tostring() {
  3. return "Person{" +
  4. "name-”” + name +" \' +
  5. ",age-"+ age +
  6. '}';
  7. }

看一个类是否重写了tostring方法直接打印这个类对应对象的名字即可如果没有重写tostring方法,那么打印的就是对象的地址值(默认)
如果重写tostring方法,那么就按照重写的方式打印

bublic boolean eauals(obiect obj)

指示其他某个对象是否与此对象“相等”.

下面Person类默认继承了object类,所以可以使用object类的equals方法
boolean equals(object obj)指示其他某个对象是否与此对象“相等”。

Person类封以继序了object类,所以可以使用object类的equals万法
boolean equals(object obj) 指示其他某个对象是否与此对象“相等”。

Object类equals方法的源码:
public boolean equals(Object obj) {
return (this — obj);
参数:
object obj :可以传递任意的对象
方法体:

  • :比较运算符。返回的就是一个布尔值true, false
    基本数据类型:比较的是值
    引用数据类型:比较的是两个对象的地址值
    this是谁?那个对象调用的方法,方法中的this就是那个对象;p1调用的equals方法,所以this就是P1
    bj是谁?传递过来的参数p2
    thisobj —》p1p2

基础操作:直接equals会弹出这个重写方法

/*
object类的equals方法默认比较的是两个对象的地址值,没有意义
所以我们需要重写equals方法,比较两个对象的属性值(name, age)
对象的属性值一样好,返回true;否则返回false
问题:
隐含着一个多态
Object obj二p2 = new Person(“古力哪扎”, 18);
多态弊端:无法使用子类特有的内容(属性,方法)
解决:可以使用向下转型(强转)把object类型转换为Person
*/
@Override
if(obj instanceof Person){
    //使用向下转型(强转)把objec t类型转换为Person
Person p = (Person )obj; 
    //比较两个对象的属性;一个是调用方法的this(p1),-个就是p(0bj=p2)
boolean b = this.name.equals(p.name) && this .age==p.age;
return b;
    //不是Person类型直接返回false
return false;
}

进阶操作:alt+insert 选择equals() and hashcode() 选择java7+版本

@Override
public boolean equals(Object o) {
if (this == 0) return true ;
if (o == null || getclass() ==o.getClass()) return false;
Person person = (Person) 0;
return age == person.age &&
objects . equals(name, person.name);
}
@Override
public int hashCode() {
int result = name != nu1l ? name.hashCode() : 0;
result = result + age;
return result;