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. 使用git上传代码到GitHub

    1.安装git git在Windows上安装很简单,在官网下载git的安装包后打开,然后一路next就好.安装完git之后,在文件夹中右击鼠标,出现Git Bash Here就表示安装完成了. 选择G ...

  2. 快速搜索多个word、excel等文件中内容

    背景:要在多个文件甚至文件夹中找到文件中包含的某些内容 以win10举例: 1.打开一个文件夹 2.打开文件夹选项 3.配置搜索 4.搜索文件

  3. Git-flow 使用笔记

    git-flow 原理:A successful Git branching model,两篇不错的中文翻译: Git开发管理之道,一个成功的Git分支模型. 简单来说,git-flow 就是在 gi ...

  4. python 爬虫之 urllib库

    文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...

  5. JAVA自动化之Junit单元测试框架详解

    一.JUnit概述&配置 1.Junit是什么? Junit是一个Java 编程语言的开源测试框架,用于编写和运行测试.官网 地址:https://junit.org/junit4/ 2.Ma ...

  6. 一口气说出 4种 LBS “附近的人” 实现方式,面试官笑了

    引言 昨天一位公众号粉丝和我讨论了一道面试题,个人觉得比较有意义,这里整理了一下分享给大家,愿小伙伴们面试路上少踩坑.面试题目比较简单:"让你实现一个附近的人功能,你有什么方案?" ...

  7. 【学习笔记】Iperf3网络性能测试工具

    [学习笔记]Iperf3网络性能测试工具 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高. ...

  8. golang 在 Mac , Linux , Windows 下交叉编译详解

    一. 前言 Golang 支持交叉编译, 在一个平台上生成然后再另外一个平台去执行. 而且编译的工具[build]这个工具是Golang 内置的,不需要你去下载第三方的包啥的,贼方便. 二. 交叉编译 ...

  9. JNDI数据源的配置及使用 (2010-11-21 21:16:43)转载▼

    JNDI数据源的配置及使用 (2010-11-21 21:16:43)转载▼ 标签: 杂谈 分类: 数据库 数据源的作用 JDBC操作的步骤: 1. 加载驱动程序 2. 连接数据库 3. 操作数据库 ...

  10. 解决xcode ***is missing from working copy

    这是由于SVN置顶文件导致的,cd 至项目根目录 命令行 输入 find . -type d -name .svn | xargs rm -rf