Object类及其常用方法简介

Object——所有类的父类

java是典型的面向对象的编程语言,在java中除了基本数据类型,其他所有的数据都以对象的形式组织,包括基本类型或对象的数组。
如果没有extends指出父类,则默认用Object作为父类,实际上所有类的最祖先类都为Object

  1. equals方法
public boolean equals(Object obj) {
        return (this == obj);
    }

类中默认的equal方法,比较两者的引用,必须是同一个对象的条件下返回true。

常用的String类中的equal方法:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
        //instanceof关键字等同于双目运算符,对象属于类
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;
    }

字符串使用中,“==”表示引用相等,equal方法表示字符内容相同。重写覆盖了Object中的equal方法。

子类equal方法设计
使用默认的equal方法实用性显然是不高的,所以在ADT设计中常常需要重写equal方法。

  • 显示参数命名otherObject
  • 检测otherObject是否为nul
  • 检验this是否与otherObject引用同一对象
  • 检验this和otherObject是否属于同一个类
    (使用getclass或instanceof)
  • 将otherObject强转为this类型
    (遇到父转子情况,报错ClassCastException)
  • 比较目标域相等
  1. toString方法
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

返回对象所属类名,@后跟其散列码组合起来的字符串,包括数组在内的类都直接继承Object的toString方法。

显然,返回散列码的方法无法直观的反映一个对象的数据情况,所以绝大多数的类采取“类的名字 + 方括号内域值”的形式。

Java自动toString转换

  • 对象与一个字符串通过+连接
  • 对象直接出现在print中
  1. hashCode方法
@HotSpotIntrinsicCandidate
    public native int hashCode();

如代码所示,在java编译器中并没有hashCode的实现。注意注释@HotSpotIntrinsicCandidate,HotSpot是java虚拟机,表示该方法在虚拟机中更高效的实现。这样的方法称为本地方法

本地方法是由其它语言编写,编译成机器代码。本地方法保存在动态链接库以.dll后缀出现。虚拟机装载包含这个本地方法的动态库,并调用这个方法。通过本地方法,JAVA程序可以直接访问底层操作系统的资源。需要注意的是,本地方法与平台相关的。

在Object中,hashCode默认返回由对象存储地址导出的一个整数值。

编写hashCode时,合理组织实例域散列码,注意与equal方法保持一致。

  1. Object中还有getClass获取类方法,以及多线程控制的其他方法。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值