1. Object类概述

  • 是类层次结构的根类
  • 每个类都使用 Object 作为超类
  • 所有类都直接或者间接的继承自该类
  • 所有对象(包括数组)都实现这个类的方法。

2. Object的构造方法

  • public Object()
  • 回想面向对象中为什么说:
  • 子类的构造方法默认访问的是父类的无参构造方法

3. Object类的hashCode()方法

  • Object类的hashCode()方法

    • 案例演示

      • package com.heima.object;
        
        import com.heima.animal.Cat;
        
        public class Demo1_HashCode {
        
            /**
        * @param args
        */
        public static void main(String[] args) {
        Object obj1 = new Object();
        int num = obj1.hashCode();
        System.out.println(num); //输出7309408 Cat c1 = new Cat();
        System.out.println(c1.hashCode()); //输出26905665 Cat c2 = new Cat();
        System.out.println(c2.hashCode()); //输出23994111 } }

        hashCode()方法

      • public int hashCode()

        • 返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。

        • 不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。

4. Object类的getClass()方法

  • Object类的getClass()方法

    • 案例演示

      • package com.heima.object;
        
        import com.heima.animal.Cat;
        
        public class Demo2_GetClass {
        
            /**
        * @param args
        */
        public static void main(String[] args) {
        Cat c1 = new Cat();
        System.out.println(c1.getClass()); Class clazz = c1.getClass(); // 获取该对象的字节码文件
        String name = clazz.getName(); // 获取名称
        System.out.println(clazz);
        System.out.println(name); System.out.println(c1.hashCode());
        System.out.println(clazz.hashCode());
        } }
      • public final Class getClass()

        • 返回此对象的运行时类。

        • 可以通过Class类中的一个方法,获取对象的真实类的全名称。

        • public String getName()

5. Object类的toString()方法

  • 案例演示

    • package com.heima.object;
      
      public class Demo3_ToString {
      
          /**
      * @param args
      */
      public static void main(String[] args) {
      Student s = new Student("Ann", 18);
      String str = s.toString();
      System.out.println(str); /*public String toString() {
      return getClass().getName() + "@" + Integer.toHexString(hashCode());
      } * toString方法源码显示,返回的结果是
      * 类名 + @ + hashCode的十六进制变现形式
      *
      * 这么写,没有实际意义。
      * toString的作用:可以更方便的显示属性值。通过重写toString方法。
      */ System.out.println(s); // 如果直接打印对象的引用,会默认调用toString()方法。
      } }
    • package com.heima.object;
      
      public class Student {
      private String name;
      private int age; public Student() {
      super(); } public Student(String name, int age) {
      super();
      this.name = name;
      this.age = age;
      } public String getName() {
      return name;
      } public void setName(String name) {
      this.name = name;
      } public int getAge() {
      return age;
      } public void setAge(int age) {
      this.age = age;
      } @Override
      public String toString() {
      return "Student [name=" + name + ", age=" + age + "]";
      } }

      Student类

6. Object类的equals()方法

  • 案例演示

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

    • 默认情况下比较的是对象的引用是否相同。

    • 由于比较对象的引用没有意义,一般建议重写该方法。

    • package com.heima.object;
      
      public class Student {
      private String name;
      private int age; public Student() {
      super(); } public Student(String name, int age) {
      super();
      this.name = name;
      this.age = age;
      } public String getName() {
      return name;
      } public void setName(String name) {
      this.name = name;
      } public int getAge() {
      return age;
      } public void setAge(int age) {
      this.age = age;
      } @Override
      public String toString() {
      return "Student [name=" + name + ", age=" + age + "]";
      } @Override
      public int hashCode() {
      final int prime = 31;
      int result = 1;
      result = prime * result + age;
      result = prime * result + ((name == null) ? 0 : name.hashCode());
      return result;
      } @Override
      /*public boolean equals(Object obj) {
      if (this == obj)
      return true;
      if (obj == null)
      return false;
      if (getClass() != obj.getClass())
      return false;
      Student other = (Student) obj;
      if (age != other.age)
      return false;
      if (name == null) {
      if (other.name != null)
      return false;
      } else if (!name.equals(other.name))
      return false;
      return true;
      }*/ public boolean equals(Object obj){
      Student s = (Student)obj;
      return this.name.equals(s.name) && this.age == s.age;
      }
      /*重写equals方法,由于传递的参数为Object obj,而多态中无法直接调用子类中的属性,需要
      * 向下转型,故 Student s = (Student)obj;
      * 从而获取到Student类中的属性:name和age。
      * String类型的数据有equals方法,int数据作为基本数据类型,没有方法,直接使用"=="。
      * */ }
  • ==号和equals方法的区别
    • ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值

    • equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性

【JAVA基础】10 Object类的更多相关文章

  1. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  2. Java基础:Object类中的equals与hashCode方法

    前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象   对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...

  3. Java基础之Object类

    类Object是类层次结构的根类.每个类都直接或者间接地继承Object类.所有对象(包括数组)都实现这个类的方法.Object类中的构造方法只有一个,并且是无参构造方法,这说明每个类中默认的无参构造 ...

  4. Java基础教程——Object类

    Object类 Object类是Java所有类类型的父类(或者说祖先类更合适) <Thinking in Java(Java编程思想)>的第一章名字就叫"everything i ...

  5. Java基础-DButils工具类(QueryRunner)详解

    Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...

  6. Java基础之File类的使用

    Java基础之File类的使用 1.File类的构造方法和常用方法 2.对File中listFile(FileNameFilter name)学习 3.与File文件类相关的实现 File类的构造方法 ...

  7. Java学习笔记二十四:Java中的Object类

    Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ...

  8. Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  9. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

随机推荐

  1. 201771010108-韩腊梅《面向对象程序设计(java)》第二周学习总结

    201771010108<面向对象程序设计(java)>第二周学习总结 第一部分:理论知识学习部分 第三章:Java的基本程序设计结构 1.标识符:① 标识符由字母.下划线.美元符号和数字 ...

  2. UnboundLocalError,探讨Python中的绑定

    绑定 将python闭包之前,先梳理一下闭包中的绑定操作. 先看看2个相关的错误 NameError 和UnboundLocalError When a name is not found at al ...

  3. 记录一次简单的springboot发送邮件功能

    场景:经常在我们系统中有通过邮件功能找回密码,或者发送生日祝福等功能,今天记录下springboot发送邮件的简单功能 1.引入maven <!-- 邮件开发--><dependen ...

  4. 发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python

    现在我们大多数人都会或多或少的关注几个公众号,如果发现一个比较合自己胃口的号 对公众号中的文章一定是每篇必读的. 有时候我们关注到宝藏型公众号时发现其历史文章已经好几百甚至上千篇了,而作者又只对其中自 ...

  5. Nginx 是如何处理 HTTP 头部的?

    Nginx 处理 HTTP 头部的过程 Nginx 在处理 HTTP 请求之前,首先需要 Nginx 的框架先和客户端建立好连接,然后接收用户发来的 HTTP 的请求行,比如方法.URL 等,然后接收 ...

  6. python3(二十) module

    # 在Python中,一个.py文件就称之为一个模块(Module) # 1.最大的好处是大大提高了代码的可维护性. # 2.可以被其他地方引用 # 3.python内置的模块和来自第三方的模块 # ...

  7. 关于Python 迭代器和生成器 装饰器

    Python 简介Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比 ...

  8. CVE-2020-0796 永恒之蓝?

    0X00漏洞简介 Microsoft Windows和Microsoft Windows Server都是美国微软(Microsoft)公司的产品,Microsoft Windows是一套个人设备使用 ...

  9. OSI 七层模型以及TCP/IP模型

    OSI 七层模型 定义 OSI(Open System Interconnection)即开放式系统互联通信参考模型.该模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一 ...

  10. Julia基础语法字符和字符串

    1.Julia字符串  2.字符