1.Object类是所有类的超类

2.Object类的equals方法

  public boolean equals(Object obj) {return (this == obj);}

  equals方法的目的是判断两个对象是否相等,返回boolean值,注意它的参数类型是Object。Object中默认实现是判断两个对象的引用是否相等,但很多时候这种判断没什么意思,更多的是判断对象的状态属性是否相等,因此我们要能够自行实现equals方法

  要实现equals方法首先要知道equals方法的特性 (1)自反性:x.equals(x),(2)对称性:x.equals(y) == y.equals(x),(3)传递性:x.equals(y),y.equals(z) =>x.equals(z),(4)一致性:x.equals(y)结果不变.(5),x不为null,x.equals(null)为false

  class Employee {
       private String name;
      private double salary;
      private Date hireDay;
    
      @Override
      public boolean equals(Object obj) {
          //如果对象完全一致
          if(this == obj) return true;
        
          //如果obj为null,返回null
          if(obj == null) return false;
        
          //如果类类型不匹配,它们也不可能相等

    /*

      说明一下用Class对象判断和用instanceof关键字判断的区别:

        a instanceof b 的判断出了自身对象还包括继承

        a.getClass() == b.getClass() 的判断不包括继承的情况

        具体用哪个还是要看你的需求:

          如果equals的语义在每个子类中有所改变,就是用getClass检测

          如果所有的子类拥有统一的语义,就是用instanceof检测

    */
          if(getClass() != obj.getClass()) return false;
        
          //现在我们能确定obj是非空对象的Employee对象
          Employee other = (Employee)obj;
        
          //测试对象属性是否完全相等
          /*用Objects.equals主要是为了防备属性为null的情况*/
    return Objects.equals(name, other.name)
                  && salary == other.salary
                  && Objects.equals(hireDay, other.hireDay);      

    }
  }

3.hashCode方法

  public native int hashCode();

  哈希码又称散列码,是由对象导出的一个整型值,默认实现返回的是对象的地址.

  如果重新定义equals方法,就必须重新定义hashCode方法,以便用户可以将对象插入到散列表中

  两个对象,如果hashCode值不想等,则两个对象一定不相等,反之对象相等,hashcode也相等。但hashcode相等,两个对象不一定相等

  一种实现:

  public int hashCode() {return Object.hash(name,salary,hireDay);}

4.toString方法

  该方法用于返回对象的字符串,在打印对象时会调用该方法

  默认实现

  public String toString() {

    return getClass().getName() + "@" + Integer.toHexString(hashCode());

  }

  自己实现:

  public String toString() {

    return getClass().getName() + "[name=" + name +",salary=" + salary + ",hireDay=" + hireDay + "]";

  }

java基础篇之Object类的更多相关文章

  1. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  2. Java基础教程(19)--Object类

      Object类位于类结构树的最顶端,所有的类都是它的直接或间接子类,因此所有的类都继承了Object类的方法,我们可以在需要的时候覆盖这些方法.下面是一些将会在本文中讨论的Object类的方法: ...

  3. java基础学习总结——Object类

    一.Object类介绍

  4. Java 基础 常用API (Object类,String类,StringBuffer类)

    Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...

  5. 【JAVA基础】10 Object类

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

  6. JAVA基础系列:Object类

    1. 万物皆对象 1. JVM在编译源代码时,在遇到没有继承Object的对象的时候,编译器会默认指定一个默认的父类Object 2. Object 和接口的关系,接口是否继承Object?接口没有继 ...

  7. 金三银四跳槽季,BAT美团滴滴java面试大纲(带答案版)之一:Java基础篇

    Java基础篇: 题记:本系列文章,会尽量模拟面试现场对话情景, 用口语而非书面语 ,采用问答形式来展现.另外每一个问题都附上“延伸”,这部分内容是帮助小伙伴们更深的理解一些底层细节的补充,在面试中可 ...

  8. java基础篇---I/O技术(三)

    接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...

  9. Java基础篇 - 强引用、弱引用、软引用和虚引用

    Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...

随机推荐

  1. Go 修改字符串中的字符(中文乱码)

    问题复现:修改字符串的第一个中文 先对原字符串做切片,然后进行拼接,得到新的字符串 func ModifyString(str string) string { tempStr := str[1:] ...

  2. ubantu18.04 配置nginx与uwsgi(前后端分离)

    ubantu18.04 配置nginx与uwsgi   一.首先先安装nginx静态服务 先更新 sudo apt-get update 1.安装gcc g++的依赖库 sudo apt-get in ...

  3. ES6对数组的增强

    来看数组的改变,Array.from()可以将类数组对象变为数组: Array.of方法用于将一组值,转化为数组: 寻找数组中是否拥有某项find().findIndex(),里面要放置回调函数: 要 ...

  4. flex布局下img图片变形的解决方法

      图片正常效果   图片变形效果 一.flex-shrink: 0 给 img 设置 flex-shrink: 0; flex-shrink 的默认值为1,如果没有显示定义该属性,将会自动按照默认值 ...

  5. 【Redis】分布式Session

    一.问题引出 1.1 Session的原理 1.2 问题概述 二.解决方案 三.代码实现-使用Token代替Session 3.1 Service 3.2 TokenController 一.问题引出 ...

  6. computed和watch的使用场景

    转载地址:https://blog.csdn.net/yuwenshi12/article/details/78561372 从作用机制和性质上看待methods,watch和computed的关系 ...

  7. linux 服务器常规巡检并生成报表(一)

    背景 最近接到一个需求要求每天巡检各台业务设备,并导出报表,但一想到设备有N台,一台台每天巡检这样的重复劳作实在是太伤神了,因此决定写一个脚本来搞定这件事. 首先,第一个要解决的问题是批量服务器执行命 ...

  8. 18 Candidates for the Top 10 Algorithms in Data Mining

    Classification============== #1. C4.5 Quinlan, J. R. 1993. C4.5: Programs for Machine Learning.Morga ...

  9. 大数据之路week05--day01(I/O流阶段一 之File)

    众所周知,我们电脑中有许许多多的文件夹和文件,文件的形式也有许多不同的格式,文件夹中也可以新建文件夹的存在,也就是多层的一步一步的嵌套. 我们想要实现I/O操作,就必须知道硬盘上文件的表现形式. 而J ...

  10. ACM-ICPC 2018 青岛赛区现场赛 K. Airdrop && ZOJ 4068 (暴力)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4068 题意:吃鸡游戏简化为二维平面上有 n 个人 (xi,yi) ...