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


相关推荐

  • Could not download kotlin-reflect.jar 完美解决

    Could not download kotlin-reflect.jar 完美解决

    2021年10月1日
    50
  • string和stringbuffer的区别面试题_stringbuffer转为string

    string和stringbuffer的区别面试题_stringbuffer转为stringString和StringBuffer的区别String:是对象不是原始类型。为不可变对象,一旦被创建,就不能修改它的值。对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。String是final类,即不能被继承。StringBuffer:是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。它只…

    2022年4月19日
    44
  • iOS的高德地图标注特定位置

    iOS的高德地图标注特定位置在开发时有时候遇到项目里面需要展示公司的位置,这时如果导入百度地图什么的就太浪费资源,而且还占内存这时只要调用自动高德地图的就行了自己写一个控制器,导入框架现在导入系统框架只要多打次就能出来了,没必要去link添加1#import”MapViewCtl.h”2#import<CoreLocation/CoreLocation.h>3#impo…

    2022年5月21日
    54
  • 不是单组分组函数「建议收藏」

    不是单组分组函数「建议收藏」问题:一:SELECT tablespace_name, SUM(bytes) freeFROM dba_free_space不是单组分组函数原因: 1、如果程序中使用了分组函数,则有两种情况可以使用:程序中存在group by,并指定了分组条件,这样可以将分组条件一起查询出来改为:  SELECT tablespace_name, SUM(bytes) freeFROM dba_free_spa…

    2022年6月30日
    31
  • matlab2016a下载包及安装教程

    matlab2016a下载包及安装教程链接:https://pan.baidu.com/s/1wMGK5jYxYdqs1IxRDfJl8A 提取码:y72e 复制这段内容后打开百度网盘手机App,操作更方便哦1 下载R2016a_win64.iso(安装文件,包括part1以及part2两部分,只需解压part1)及Matlab2016aWin64Crack.rar(破解文件),百度云盘的提取地址及密码如上所示2 解…

    2022年5月25日
    41
  • 向量的内,外积及其几何含义讲解_两向量外积的几何意义

    向量的内,外积及其几何含义讲解_两向量外积的几何意义一、向量的内积(点乘)定义概括地说,向量的内积(点乘/数量积)。对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,如下所示,对于向量a和向量b:a和b的点积公式为:这里要求一维向量a和向量b的行列数相同。注意:点乘的结果是一个标量(数量而不是向量)定义:两个向量a与b的内积为a·b=|a||b|cos∠(a,b),特别地,0·a=a·0…

    2022年9月24日
    0

发表回复

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

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