JAVA学习day11 JavaSE基础——Object类中的常用方法

1. object 类的概述

  Object 类是类层次结构的根类,每个类都使用Object类作为父类;所有类(包括数组)的对象都实现这个类的方法。

2. Object 类的hasCode方法

  public int hasCode()
   ● 返回该对象的一个哈希码值。默认情况是根据对象的地址来计算。
   ● 哈希码值不是对象的实际地址值,可以理解为逻辑地址值。

如下代码就是两个不同对象的哈希码值:

public class Test {public static void main(String[] args) {Object obj = new Object();Object obj2 = new Object();int val = obj.hashCode();int val2 = obj2.hashCode();System.out.println(val);System.out.println(val2);}
}


3. Object类中的getClass()

  public final class getClass()
   ● 返回Object的运行时类

代码演示:

public class Test2 {public static void main(String[] args) {Object o = new Object();Object o1 = new Object();Object aClass = o.getClass();Object aClass1 = o1.getClass();boolean b = (aClass == aClass1);System.out.println(b);}
}

4. Object 类中的toString 方法

  public String toString()
   ● 返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
   ● Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

   getClass().getName() + ‘@’ + Integer.toHexString(hashCode())

代码演示:

public class Test3 {public static void main(String[] args) {Person p1 = new Person("张三", 21);Person p2 = new Person("李四", 32);System.out.println(p1.toString());System.out.println(p2.toString());}
}
class Person{String name;int age;public Person(String name, int age){this.name = name;this.age = age;}//重写toString方法@Overridepublic String toString(){return "姓名:"+this.name+" "+"年龄:"+this.age;}
}

重写之前执行结果:

重写之后执行结果:

5. Object 类中的equals方法

  public boolean equals(Object obj)
   ● 指示其他某个对象是否与此对象“相等”。
   ● 对于任何非空引用值 x,x.equals(null) 都应返回 false。
   ● Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

代码演示:

public class Test4 {public static void main(String[] args) {Student stu = new Student("小明", 22);Student stu2 = new Student("小住", 22);boolean b = stu.equals(stu2);System.out.println(b);}
}
class Student extends Person {public Student(String name, int age) {super(name, age);}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof Student)) {return false;}if(obj == null){return false;}if (obj == this){return true;}Student stu = (Student) obj;return this.name == stu.name && this.age == stu.age;}
}

执行结果:

6. Object 类的clone 方法

protected Object clone() throws CloneNotSupportedException
   ● 创建并返回该对象的一个副本。
   ● 如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。
   ● clone 方法的权限修饰符是protected ,子类要重写该方法后才能使用。

代码演示:

public class Test5 {public static void main(String[] args) throws CloneNotSupportedException {Teacher teacher = new Teacher("张飞", 36);Teacher teacher1 = (Teacher) teacher.clone();teacher1.name = "刘备";teacher1.age = 39;System.out.println(teacher);System.out.println(teacher1);System.out.println(teacher.equals(teacher1));}
}
class Teacher extends Person implements Cloneable{public Teacher(String name, int age) {super(name, age);}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}

执行结果:

可见复制的对象和被复制的对象都是独立存在的,两者有不同的内存地址。

JavaSE基础——Object类中的常用方法相关推荐

  1. Object类中的常用方法

    这里写目录标题 一,equals()方法 二,toString()方法 三,finalize()方法 四,hashcode()方法 一,equals()方法 1,所有类都从Object类中继承equa ...

  2. JavaSE基础——常用类1

    JavaSE基础--常用类1 一.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它当中描述的所有方法子类都可以使用. 如果在类的声明中没有显式地使用exte ...

  3. JavaSE之Object类

    目录 Object类的概述 Object类中常用方法介绍 1.hashCode()方法 2.getClass()方法 3.toString()方法 4.equals()方法 Object类的概述 Ob ...

  4. Object类中的方法

    基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Obje ...

  5. python中的object是什么意思_Python object类中的特殊方法代码讲解

    python版本:3.8class object: """ The most base type """ # del obj.xxx或del ...

  6. Thread和Object类中关于线程的相关方法

    Thread和Object类中线程的7个重要方法概览 类 方法名称 简介 Thread sleep相关 相关表示sleep所有的重载方法,参数不同,实际作用大同小异 Thread join() 等待其 ...

  7. object类中的equals与自定义equals方法详解

    object类中的equals与自定义equal方法详解 1.this怎么理解?this == obj表示什么? this就是当前你new出来的对象,这里指谁调用equal方法this指的就是谁,ob ...

  8. String类中的equals方法与Object类中的equals方法的不同点

    1.首先我们看看Object类中的equals方法 public boolean equals(Object obj) {return (this == obj);} 我们可以看出Object类中判断 ...

  9. 重写Java Object类中的equals()方法

    Java中的Object类中的equals方法 Object类的equals方法 重写Object类的equals()方法 Person类默认继承了Object类,所以可以使用Object类的equa ...

  10. wait/notify/notifyAll在Object类中

    wait/notify/notifyAll在Object类中 因为我们在使用synchronized锁 对象锁可以是任意对象,所以wait/notify/notifyAll需要放在Object类中. ...

最新文章

  1. css animation动画完成后隐藏_如何使用CSS实现旋转地球动画效果
  2. 第十六届全国大学生智能车各分赛区所需要的比赛系统器材
  3. HDU 2128 Tempter of the Bone II BFS
  4. 在本地安装git的HTML帮助文档
  5. yii2 basic版 MVC 部分
  6. 一个javascript框架应有的功能
  7. MCSE2003学习之一
  8. leetcode - 837. 新21点
  9. CPU的温度是360的准还是鲁大师的准?
  10. 后端服务接口都在测试什么?怎么测?
  11. 12个免费的 Twitter Bootstrap 后台模板
  12. python_flask框架Ubuntu16.04下环境搭建
  13. Swing 主题 - FlatLaf
  14. 什么是App加壳,以及App加壳的利与弊
  15. can软件android,appcan-android
  16. 无线连接网络找不到计算机组,无线网络连接不见了的4个解决方法!电脑无线网络连接找不到如何解决?...
  17. High Availability for the HDFS Namenode
  18. R语言用贝叶斯线性回归、贝叶斯模型平均 (BMA)来预测工人工资
  19. 无线连接IPTV完整教程
  20. 使用切图工具经常遇到的问题

热门文章

  1. CF1137E Train Car Selection(单调栈维护凸函数)
  2. UML建模:学习笔记(1)
  3. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希
  4. Container的限制
  5. (html字体图片纯css插件)Font Awesome
  6. 怎样区分现代艺术和幼儿涂鸦
  7. katakana.php,片假名 平假名转换器 - Hi!Penpal!
  8. 拓端tecdat|Python中的ARIMA模型、SARIMA模型和SARIMAX模型对时间序列预测
  9. spring5.0学习笔记4
  10. layui登录源码_基于springboot+thymeleaf+mysql+layui实现的论坛系统