Java基础知识学习:Object类详解

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

Object类_基本特性

  1. 附Object类的结构视图
    在这里插入图片描述
  2. Object类是Java中所有类的最终祖先,在Java中,每个类都是由它扩展而来的,但是并不需要这样写 class Employee extends Object,因为如果在没有明确指出父类的时候,Object就被认为是这个类的最终父类.
  3. 在Java中,只有基本类型的值不是对象,而所有的数组类型等都扩展于Object类型

Object类_toString()方法

  1. 作用:用于返回表示对象值的字符串
    在这里插入图片描述 根据如上源码得知,默认会返回“类名+@+16 进制的 hashcode”。在打印输出或者
    用字符串连接对象时,会自动调用该对象的 toString()方法。
  2. 绝大多数toString方法都遵循这样的格式:类的名字,随后是一对方括号(或者花括号)括起来的域值,下面是创建了一个Student类,然后使用IDEA默认生成的toString()方法
    在这里插入图片描述
  3. 随处可见toString()方法的主要原因是:只要对象与一个字符串通过操作符"+"连接起来,Java编译器就会自动调用该对象的toString()方法,以便获得这个对象的字符串描述.
    在这里插入图片描述
  4. 因此,在调用x.toString()的地方都可以用""+x替代.这条语句将一个空串与x的字符串表示相连接,比起使用toString()的好处是,如果x是基本类型,这条语句也能正常执行
  5. 强烈建议为自己编写的每一个类增加toString方法

Object类_equals方法

  1. “==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象
  2. 在Object类中,equals方法将判断两个对象是否具有相同的引用.Object 的 equals 方法默认就是比较两个对象的 hashcode,是同一个对象的引用时返回 true 否则返回 false。但是,我们可以根据我们自己的要求重写 equals 方法。
  3. Java中规定equals要具有下面的特性
     1)自反性:对于任何非空引用x,x.equals(x)应该返回true
     2)对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true
     3)传递性:对于任何引用x,y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true
     4)一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果
     5)对于任意非空引用x,x.equals(null)应该返回false
  4. 如果重新定义equals方法,就必须重新定义hashCode方法,以便用户可以将对象插入到散列表中.
  5. 重写equals案例
    在这里插入图片描述

Object类_hashCode方法

  1. 散列码(hashCode):是由对象导出的一个整数值.散列码是没有规律的.
  2. 由于hashCode()定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址
  3. 示例
    在这里插入图片描述
     可以注意到,字符串s与t拥有相同的散列码,这是因为字符串的散列码是由内容导出的,s和t的内容是相同的
     但是sb和tb是不同的散列码,因为StringBuffer类中没有定义hashCode方法,它的散列码是由Object类的默认hashCode方法导出的对象存储地址.

Object类_getClass方法

  1. 返回包含对象信息的类对象.
  2. 示例
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41649001/article/details/106609259