类Object是类层次结构的根(最顶层)类。每个类都使用Object作为超(父类)类。也就是说

一个类都会直接或者间接的继承自该类

所有对象都实现了这个类的方法

equals方法:

boolean equals(Object obj):判断其他某个对象是否与此对象相等

源码:

public boolean equals(Object obj){
return this==obj;
}
  • 1.
  • 2.
  • 3.

 ==比较运算符:

基本数据类型:比较的是值

引用数据类型:比较的是两个对象的地址值

person p1=new person("a",1);
person p2=new person("a",1);
p1.equals(p2);//false
p1=p2;//p2的地址值赋给p1
p1.equals(p2);//true
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

在类中重写equal方法,比较两个类的属性

比较时隐含多态:

Object obj=p2 =new person("a",1);

多态弊端:无法使用子类特有的内容(属性,方法)

解决:       向下转型,把Object转换为person

优化:   

(1)向下转型时增加一个判断if(obj instanceof person),防止向下转型出错

(2)如果是null,直接返回false

(3)如果传递的参数时this本身 直接返回true    if (this==obj)    

【java笔记】Object类_后端

 快捷键Fn+Alt+insert :equals()+hashcode();

toString方法:

在对象调用  默认tostring方法或sout方法时,打印的是类的地址

【java笔记】Object类_开发语言_02

tostring()的重写:

public class person {
    private String name;
    private int age;

    public person() {
    }

    public person(String name, int age) {
        this.name = name;
        this.age = age;
    }
//在person类中重写toString类
    @Override
    public String toString() {
        return "person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

快捷键Fn+Alt+insert找到tostring()

【java笔记】Object类_java_03

 定义一个类时,不仅要添加Getter和Setter方法,还要添加toString方法

总结:

【java笔记】Object类_向下转型_04

 Objects类:

在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,由一些静态的实用方法组成,

这些方法时null-safe(空指针安全的)或null-tolerant(容忍空指针的)

下面出现空指针异常

String s1=null;
String s2="abc";
s1.equals(s2);
  • 1.
  • 2.
  • 3.
equals()方法:

Objects.equals(obj1,obj2):

判断obj1,obj2是否相等。(防止有一个为空,空对象不能调用equal()方法)

String s1=null;
String s2="a";
boolean b=Objects.equals(s1,s2);
  • 1.
  • 2.
  • 3.

源码:

public static boolean equals(Object a,Object b){
    return (a==b)||(a!=null&&a.equals(b));}
  • 1.
  • 2.