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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wxpython使用教程_wxPython的安装与使用教程[通俗易懂]

    wxpython使用教程_wxPython的安装与使用教程[通俗易懂]一、wxPython介绍1.wxPython是Python语言的一套优秀的GUI图形库。wxPython可以很方便的创建完整的、功能键全的GUI用户界面。wxPython是作为优秀的跨平台GUI库wxWidgets的Python1.封装和Python模块的方式提供给用户的。2.wxPython是跨平台的,可以在不修改程序的情况下在多种平台上运行。目前支持的平台有Win32/Win64、MacO…

    2022年5月21日
    39
  • 线性链表 java实现「建议收藏」

    线性链表 java实现「建议收藏」publicclassLinkList{ classNode{//定义Node节点 privateTdata; privateNodenext; publicNode(){} publicNode(Tdata,Nodenext){ this.data=data; this.next=next; } } privateNodehea

    2025年5月28日
    5
  • 打包pycharm里的文件_eclipse打包成exe文件

    打包pycharm里的文件_eclipse打包成exe文件前期准备:安装pyinstaller方法一:在PyCharm中打包点击底部的【Terminal】打开终端,输入命令pyinstaller–console–onefile***.py或者输入命令pyinstaller-F-w*.py成功后在工程目录下/dist文件夹中会有打包好的exe文件方法二:在源码所在目录下,进入DOS窗口,输入pyinstaller-F-w*.py-F(注意大写)是所有库文件打包成一个exe,-w是不出黑色控制台窗口。不加-F参.

    2022年8月27日
    4
  • threadlocal底层实现_ioc的底层实现原理

    threadlocal底层实现_ioc的底层实现原理ThreadLocal作用:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂性。package com.mupack;public class App{ private String content; public void setContent(String content) { this.content = content; } public Stri

    2022年8月8日
    3
  • elasticsearch面试常问问题_面试题 谈谈你对加班的看法

    elasticsearch面试常问问题_面试题 谈谈你对加班的看法前言随着企业对近实时搜索的迫切需求,Elasticsearch受到越来越多的关注,无论是阿里、腾讯、京东等互联网企业,还是平安、顺丰等传统企业都对Elasticsearch有广泛的使用,但是在Elasticsearch6.8发布以前,大部分Elasticsearch功能都是付费的,开源版本的Elasticsearch在集群管控方面能力有限,鉴于此,通用的实施方案就是给Elasticsearch添加一层网关,从而实现对Elasticsearch的管控。全套Java面试资料白嫖:

    2025年11月5日
    3
  • OPKG命令执行过程分析

    OPKG命令执行过程分析一、简介Opkg是一个基于ipkg的轻量级的软件包管理系统,主要用于嵌入式系统,目前应用opkg的有OpenWRT和OpenEmbedded。1Opkg的详细使用方法可以参考OpenWRT的WIKI页面2,不再赘述,本文将重点解释opkg的工作原理。Opkg的源代码可以在GoogleCode3或YoctoProject4上找到。Opkg的版本目前到了0.3.05,我使用的

    2022年6月6日
    41

发表回复

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

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