Java面向对象——Object类的使用及常用方法

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
  • toString()
    • 输出结果是地址值(虚拟的内存地址)。即输出一个对象的引用时,实际上就是调用当前对象的toString()方法
    • 像String、Date、File、包装类等都重写了Object类中的toString()方法,使得在调用toString方法时,返回的时实体内容
    • source>Generate toString()也可以自动生成对象的toString方法
  • getClass()
  • hashCode()
  • clone()
  • finalize()
  • wait()
  • notify()/notifyAll()
原文地址:https://www.cnblogs.com/codexlx/p/13538399.html