Object类的常见方法总结
♧ Object类是比较特殊的类,它是所有类的父类。主要提供了11个方法(JDK 1.8为例):
/**
* native方法,用于返回当前运行时对象的Class对象,使用final关键字修饰,子类不允许进行重写
*/
public final native Class<?> getClass(); /**
* native方法,用于返回对象的哈希码值,主要应用于哈希表中,比如JDK中的HashMap集合类
*/
public native int hashCode(); /**
* 用于比较两个对象的内存地址是否相同,如果要进行自定义比较,需要对该方法进行重写,比如String类中的equals方法就是比较字符串是否相同
*/
public boolean equals(Object obj) {
return (this == obj);
} /**
* native方法,用于创建并返回当前对象的一个拷贝。一般情况下,对于任何对象x,表达式x.clone() != x为true;x.clone().getClass() == x.getClass()为true。Object本身没有重写Cloneable接口,所以不重写clone方法就进行调用的时候,会抛出异常。
*/
protected native Object clone() throws CloneNotSupportedException; /**
* 返回类的名字@实例的哈希码的十六进制字符串
*/
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
} /**
* native方法,并且不能重写,唤醒一个在此对象监视器上等待的线程(监视器相当于锁的概念)。如果存在多个线程在等待,只会任意唤醒一个
*/
public final native void notify(); /**
* native方法,并且不能重写,唤醒在此对象监视器上等待的所有线程
*/
public final native void notifyAll(); /**
* native方法,并且不能重写。暂停线程的执行。注意:sleep方法没有释放锁,而wait方法释放了锁,timeout是等待时间
*/
public final native void wait(long rimeout) throws InterrupteException; /**
* wait方法重载,多了参数nanos,表示额外的时间(以毫秒为单位,范围是0-999999)。所以超时的时间需要加上nanos毫秒数
*/
public final void wait(long timeout, int nanos) throws InterruptedException {
if(timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if(nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException("nanosecond timeout value out of range");
}
if(nanos > 0) {
timeout++;
}
wait(timeout);
}
public final void wait() throws InterrupteException {
wait(0);
};
/**
* 实例被垃圾回收器回收的时候触发
*/
protected void finalize() throws Throwable {}
Object类的常见方法总结的更多相关文章
- Java基础知识强化26:Object类之hashCode()方法、getClass()方法
1. Object类的hashCode()方法,如下: public int hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的 ...
- 关于Object类下所有方法的简单解析
类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直接来看jdk的源码,开始我们的分析之路 ...
- object类的equals方法简介 & String类重写equals方法
object类中equals方法源码如下所示 public boolean equals(Object obj) { return this == obj; } Object中的equals方法是直接 ...
- Java Object类及其equals方法
基本概念: Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: Object类是所有Java类的祖先.每个类都使用 Object 作为超 ...
- Object类中通用方法之:toString()方法
1.Java所有的对象都是Object类的实例,都可以直接调用该类中定义的方法,这些方法称为通用方法 2.toString()方法即为Object类中定义的通用方法之一 3.平时我们如果在控制台直接打 ...
- [ 转载 ] Java基础10--关于Object类下所有方法的简单解析
关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...
- Java中的Object类的toString()方法,equals()方法
Object类是所有类的父类,若没有明确使用extends关键字明确表示该类继承哪个类,那么它就默认继承Object类,也就可以使用Object中的方法: 1.toString 如果输出一个对象的时候 ...
- Java Object类的equals()方法
所有类都从Object类中继承了equals方法,Object类中equals方法源代码如下: public boolean equals(Object obj) { retu ...
- String类的常见方法的使用案例
String类的常见方法的使用案例 //使用指定的字符串替换当前字符串中指定的内容 //将helloworld中的o替换为a String s="HelloWorld"; Stri ...
随机推荐
- swack的wiki站上线
swack的个人wiki网址:www.swack.cn [服务器破旧,速度较慢,见谅!]
- ORA-28001: the password has expired解决方法
Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...
- LeetCode876 链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4 ...
- AI智能皮肤测试仪助力美业数字化营销 实现门店与用户双赢局面
当皮肤遇到AI智能,会有怎么样的火花呢?随着生活水平的提升,人们对肌肤保养护理的需求也越来越高,人要美,皮肤养护也要更精准,数字化必将成为美业发展的新契机.新机遇下肌肤管家SkinRun为美业客户提供 ...
- Xshell与Xftp免费下载安装及步骤
Xshell与Xftp免费下载安装及步骤 1.进入Xshell的官网:https://www.netsarang.com/zh/ 加粗样式 2.选择你需要的软件进行下载如:Xshell 3.选择家庭和 ...
- 【Linux】saltstack的使用详解 超详细
一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...
- 【Oracle】下载11.2.0.4的地址
https://updates.oracle.com/download/13390677.html 这个地址就是下载Oracle 11.2.0.4版本的地址,需要有metalink账号才可以下载
- REUSE_ALV_GRID_DISPLAY_LVC 的fieldcat定义
在使用REUSE_ALV_GRID_DISPLAY_LVC函数的时候,需要注意的是,内表中如果有P类型的或者数据元素为BDMNG等类型是,在定义fieldcat的时候,注意要指定fieldcat-da ...
- Docker 拉取镜像速度太慢
Docker Hub 是我们分发和获取 Docker 镜像的中心,但由于服务器位于海外,经常会出现拉取/上传镜像时速度太慢或无法访问的情况.再加上运营方不断对 Docker Hub 的免费使用进行限制 ...
- cfsetispeed、cfsetospeed和cfsetspeed探究
在我https://www.cnblogs.com/Suzkfly/p/11055532.html这篇博客中有一个疑问,就是在串口设置波特率的域中,没有将输入输出波特率分开,那为什么会有几个不同的设置 ...