资讯专栏INFORMATION COLUMN

object类的概述

WelliJhon / 276人阅读

摘要:类的概述类是类层次结构的根类,每个类都使用作为超类。即每个类都直接或间接的继承类。在类中有方法以的形式返回此对象所表示的实体类接口数组类基本类型或名称。返回该对象的字符串表示。

object类的概述
object类是类层次结构的根类,每个类都使用object作为超类。

即每个类都直接或间接的继承object类。

object类中方法介绍 hashCode
public int hashCode():返回对象的哈希码值。

​ 注意:哈希值是根据哈希算法计算出来的一个值,该值与地址值有关,但不是实际的值。可理解为地址值。

getClass
public final Class getClass():返回object运行时类,得到一个Class对象。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 
​    在Class类中有getname()方法以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
toString
public String toString():返回该对象的字符串表示。
toString方法返回一个字符串,它的值等于: 
getClass().getName() + "@" + Integer.toHexString(hashCode())
    
ps:Integer.toHexString()为Integer类下一静态方法,
public static String toHexString(int i):以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。

源码:
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
但toString方法返回的信息是无意义的。所以建议所以子类重写改方法。

重写的格式为:把所有成员变量值返回即可。但这样不是最好,自动生成即可。

class Test{
    int num;
    
    @Override
    public String toString() {
        return "Test [num=" + num + "]";
    }
}

直接输出一个对象的名称,就是调用改对象的toString()方法。

equals
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
源码:
public boolean equals(Object obj) {
        return (this == obj);
    }
==:

​ 基本类型:比较值是否相等。

​ 引用类型:比较其地址值是否相等。

该方法,默认情况比较的是地址值,但是比较地址值意义不大,所以要重写改方法。

在方法重写时比较对象的成员变量值是否相同

重写代码优化:提高效率,提高程序健壮性。

要想做到最好优化还是自动生成。(自动生成时会和hascode()方法一起生成。)

class Test{
    int num;
    String sfa;

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + num;
        result = prime * result + ((sfa == null) ? 0 : sfa.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Test other = (Test) obj;
        if (num != other.num)
            return false;
        if (sfa == null) {
            if (other.sfa != null)
                return false;
        } else if (!sfa.equals(other.sfa))
            return false;
        return true;
    }
}

注:此为eclipse生成可能与idea生成的有所不同,但效果一样。

finalize
protected void finalize() throws Throwable :当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
clone
protected Object clone() throws CloneNotSupportedException:创建并返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。

Cloneable:此类实现了Cloneable接口,以示Object.clone()方法合法的进行对该类的按字段复制。

​ Cloneable是一个标记接口,表明实现该接口的类可以实现对象的复制。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74216.html

相关文章

  • 第八章-Java常用API#yyds干货盘点#

    摘要:常用类概述包含执行基本数字运算的方法没有构造方法,如何使用类中的成员呢看类的成员是否都是静态的,如果是,通过类名就可以直接调用。所有类都直接或间接的继承该类。 1 常用API1.1 Math1.1.1 Math类概述Math包含执行基本数字运算的方法没有构造方法,如何使用类中的成员呢?看类的成员是否都是静态的,...

    番茄西红柿 评论0 收藏2637
  • java学习(五) —— 常用API类概述

    摘要:成员方法类概述用于产生随机数成员方法正则表达式相关方法判断功能分割功能替换功能获取功能和类的使用类概述包含一些有用的类字段和方法。注意它不能被实例化,因为此类构造器是私有的成员方法类类概述表示特定的瞬间,精确到毫秒。 前言 我们都知道,JDK包含了JRE,而JRE中也提供了各种功能的java类,现在我们就对这些类有个简单了解,然后灵活运用。 常用类:Object类/Scanner类,...

    Tecode 评论0 收藏0
  • Java编程基础12——Eclipse使用&Object类型

    摘要:如何去掉默认注释选择你不想要的内容,通过右边编辑。有什么用用别人写好的东西打包选中项目右键自己指定一个路径和一个名称导入包复制到项目路径下并添加至构建路径。 1.常见开发工具了解 A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) D:Eclipse和MyEclipse的区别 a...

    张巨伟 评论0 收藏0
  • Java编程基础17——集合(List集合)

    1_(去除ArrayList中重复字符串元素方式)* A:案例演示 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) 思路:创建新集合方式 import java.util.ArrayList; import java.util.Iterator; public class ArrayList_1_demo { /* 创建新集合将重复元素去掉 * 1.明...

    scola666 评论0 收藏0
  • 继承的实现方式及原型概述 | JavaScript 随笔

    摘要:每一个对象直接量都是的子类,即构造函数中的构造函数与普通函数并没有什么两样,只不过在调用时,前面加上了关键字,就当成是构造函数了。由于没有传入变量,在调用的构造函数时,会出错这个问题可以通过一个空对象来解决改自。 showImg(https://segmentfault.com/img/bVmNZj); 对于 OO 语言,有一句话叫Everything is object,虽然 Ja...

    chenjiang3 评论0 收藏0

发表评论

0条评论

WelliJhon

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<