Object类11种方法

Object类11种方法Object 类 11 种方法 部分方法讲解

1概述

如果⼀个类没有特别指定⽗类,那么默认则继承⾃Object类。例如:

public class MyClass /extends Object/ { // … }

1 toString⽅法

⽅法摘要
public String toSting():返回该对象的字符串表示
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值
覆盖重写
如果不希望使⽤toString⽅法的默认⾏为,则可以对它进⾏覆盖重写。例如⾃定义的Person类:



public class Person { 
    private String name; private int age; @Override public String toString() { 
    return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } // 省略构造器与Getter Setter } 

2 hashCode()

native方法,用于返回对象的哈希吗,主要使用在哈希表中,比如jdk中的 HashMap

3 equals⽅法

⽅法摘要
public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
调⽤成员⽅法equals并指定参数为另⼀个对象,则可以判断这两个对象是否是相同的。这⾥的“相 同”有默认和⾃定义两种⽅式。
1.默认地址⽐较
如果没有重写equals方法,那么Object类中默认进行==运算符 的对象地址比较,只要不是同一个对象,结果必然是false.
2.对象内容⽐较
如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可覆盖重写equals方法。例如:





import java.util.Objects; public class Person { 
    private String name; private int age; @Override public boolean equals(Object o) { 
    // 如果对象地址⼀样,则认为相同 if (this == o) return true; // 如果参数为空,或者类型信息不⼀样,则认为不同 if (o == null || getClass() != o.getClass()) return false; // 转换为当前类型 Person person = (Person) o; // 要求基本类型相等,并且将引⽤类型交给java.util.Objects类的equals静态⽅ 法取⽤结果 return age == person.age && Objects.equals(name, person.name); } } 

public static boolean equals(Object a, Object b) :判断两个对象是否相等

public static boolean equals(Object a, Object b) { 
    return (a == b) || (a != null && a.equals(b)); } 

4 Class getClass()

public class Student { 
    String name; int age; public Student(String name, int age) { 
    this.name = name; this.age = age; } public Student() { 
    } public String getName() { 
    return name; } public void setName(String name) { 
    this.name = name; } public void setAge(int age) { 
    this.age = age; } public int getAge() { 
    return age; } } 

主方法实现

public class Demo { 
    public static void main(String[] args) throws Throwable { 
    System.out.println("------Class getClass()----"); Student stu1 = new Student("qw", 12); Student stu2 = new Student("ae", 12); Class aClass = stu1.getClass(); Class aClass1 = stu2.getClass(); //同种类型的对象,对应的字节码对象都是同一个 System.out.println(aClass==aClass1);//true 

5 Object clone()-克隆

定义Clone类

 public class Clone { 
    String name; int age; public Clone(String name, int age) { 
    this.name = name; this.age = age; } public Clone() { 
    } 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; } } 

子克隆类:

public class ZiClone extends Clone implements Cloneable{ 
    @Override protected Object clone() throws CloneNotSupportedException { 
    return super.clone(); } } 

主方法实现

public class Demo { 
    public static void main(String[] args) throws Throwable { 
    ZiClone zi = new ZiClone(); /*深克隆复制是对象 */ zi.setName("lucy"); Object clone= zi.clone();//多态 ZiClone clone1=(ZiClone)clone; //==对比是时地址值 System.out.println(zi==clone1);//false //复制出来的在堆中的内存位置不一样 /*浅克隆 复制引用*/ ZiClone clone2=zi; System.out.println(zi==clone2);//true } } 

6 void finalize() -Gc垃圾回收机制

7.wait(long timeout)

8.wait(long timeout, int nanos)

比上者多了 nanos参数,表示额外的时间(以毫秒为单位,范围是 0 – )

9.wait()

跟上面两个一样,只不过该方法会一直等下去,没有超时这个概念

10.notify()

11.notifyAll()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233824.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MSF搭建socks代理[通俗易懂]

    MSF搭建socks代理[通俗易懂]目录搭建代理添加路由​搭建Socks4a代理搭建Socks5代理连接代理搭建代理当我们通过MSF拿到一个机器的权限后,想通过MSF搭建socks代理,然后通内网。MSF中有三个代理模块,分别是socks4a、socks5、socks_unc。我们一般用socks4a和socks5进行代理。socks5可以设置用户名和密码。这里运行代理后,有时候MSF不会监听端口…

    2022年6月16日
    118
  • lm358红外接收电路_熔断器用于电路的什么保护

    lm358红外接收电路_熔断器用于电路的什么保护 §01红外检测一、实验背景在很多场合需要使用到物体光电检测,常用到的方法就是使用调制的红外发射管照射物体,通过物体的反射将调试的红外光线送入红外光电检测管,经过放大检测之后反映物体是否存在以及相对的远近。之所以需要对于检测的红外光线进行调试主要是为了避免环境光线的影响。特别是室外的日光中包含有大量的红外线。在反射式红外光电管ITR8307、利用反射光电管ITR9909制作节能信标光电感应开关分别测试了基于反射式一体化红外光电管检测方案。其中使用了ESP32进行实验。

    2025年8月6日
    2
  • idea2021永久破解激活码[在线序列号]

    idea2021永久破解激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    662
  • Linux系统的内核态和用户态[通俗易懂]

    Linux系统的内核态和用户态[通俗易懂]一、 Unix/Linux的体系架构  如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供

    2022年9月17日
    1
  • 如何设置VSCode删除整行快捷键?

    如何设置VSCode删除整行快捷键?如何设置VSCode删除整行快捷键?在使用VSCode的时候,发现它的快捷键是Ctrl+Shift+K那怎么设置成我们经常用的Ctrl+D呢1.选择文件–>首选项–>键盘快捷方式2.输入CtrlD,对应的是将下一个查找匹配项添加到选择,点击前面的编辑,将快捷键改成(Ctrl+Shift+Alt+D)改成一个不会与现有的快捷键重复就行;3.输入CtrlShiftK找到原来的删除整行快捷命令,将其改成Ctrl+D,就可以愉快地删除了…

    2022年6月15日
    224
  • Java反射是什么?看这篇绝对会了![通俗易懂]

    Java反射是什么?看这篇绝对会了![通俗易懂].概念反射就是把Java的各种成分映射成相应的Java类。Class类的构造方法是private,由JVM创建。反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C或者C++中就没有办法在程序中获得函数定义相关的信息。(来自Sun)JavaBe

    2022年7月7日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号