【JavaSE】Java入门八(Object类详解)

object类

       Java中Object类是所有类的父类,可以理解为他是最抽象的一个类型,就像混沌,Java所有类型都继承自它,所有对象(包括数组)都实现这个类的方法。非常重要,下面我来根据JDK官方文档来带大家学习一下这个类的所有方法。

 下面是JDK1.6中的object方法摘要,一共有11种方法。本篇文章会详细介绍这11种方法该如何去使用。

1. toString()方法

object类中的toString方法实现:

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

该方法的主要作用是打印对象的内容,我们在使用中一般通过在继承类中重写该方法来自定义实现对具体对象的打印

2.equals()方法

该方法的作用是比较对象内容

Java 中, == 进行比较时:
a. 如果 == 左右两侧是基本类型变量,比较的是变量中值是否相同
b. 如果 == 左右两侧是引用类型变量,比较的是引用变量地址是否相同
如果要比较对象中内容,必须重写 Object中的equals方法。

3.hashcode()方法

该方法用于计算对象的哈希值,源码如下:

 public native int hashCode();

这是一个native方法,底层代码是用C/C++实现的。

  • 如果两个对象的equals的结果是相等的,则两个对象的 hashCode 的返回结果也必须是相同的。
  • 任何时候重写equals,都必须同时重写hashCode

该方法一般在具有哈希功能的Collection中使用。

4.clone()方法

该方法负责把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制(浅拷贝)。

只有实现Cloneable接口的类才能使用clone()方法,而且使用前需要重写。

@override
protected Object clone() throws CloneNotSupportedException{
//调用父类中的clone方法
//相当于让Java帮我们克隆一个对象,并把克隆之后的对象返回出去。
return super.clone();

Cloneable接口:内部没有抽象方法,表示当前的接口是一个标记性接口。

5.getClass()方法

   final方法,在反射中使用,用已返回Class类型的对象。

6.wait()方法

使线程进入等待状态,直到以下事件发生:

  1. 其他线程调用了该对象的notify方法。
  2. 其他线程调用了该对象的notifyAll方法。
  3. 其他线程调用了interrupt中断该线程。

7.wait(long timeout)方法

使线程进入等待状态,直到以下事件发生:

  1. 其他线程调用了该对象的notify方法。
  2. 其他线程调用了该对象的notifyAll方法。
  3. 其他线程调用了interrupt中断该线程。
  4. 超过指定的时间量。

8.wait(long timeout, int nanos)方法 

用法同上,这里的

timeout - 要等待的最长时间(以毫秒为单位)。

nanos - 额外时间(以毫微秒为单位,范围是 0-999999)。

9.notify()方法

该方法用来唤醒在该对象上等待的某个线程。选择是任意性的。

10.notifyAll()方法

该方法用来唤醒在该对象上等待的所有线程。

11.finalize()方法

当JVM的垃圾回收器确定不存在该对象的更多引用时,由垃圾回收器调用此方法

因为不确定该方法什么时候被调用,很少使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286910.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023最新整理软件测试常见面试题附答案

包含的模块: 本文分为十九个模块,分别是:软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源需要的可以【点击文末小…

python画图【02】

完整代码 https://gitee.com/ihan1001 https://github.com/ihan1001/python-drawing import matplotlib.pyplot as plt import numpy as np #创建空白画笔 fig plt.figure(figsize(4,3),facecolorpink)#添加子画布 ax1 fig.add_subplot(2,2,1) ax2 fig.add_subplot(2,2,2) …

Eclipse_01_如何设置代码文件背景颜色为护眼沙绿色

设置方法 Window --> Preference 参考文档 参考文档 1

LoadRunner-Analysis

Analysis介绍 Analysis介绍 Analysis:用于产生性能测试报告;在Controller这里选择Analyze Results 标准差越大说明系统越不稳定 添加新图表: 如果要把另一个表合在一起:

自动化测试 (五) 读写64位操作系统的注册表

自动化测试经常需要修改注册表 很多系统的设置(比如:IE的设置)都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候,经常需要去修改注册表 Windows注册表简介 注册表编辑器在 C:\Windows\regedit…

在 WinForms DataGridView 中居中绘制图片的全面指南

在 WinForms DataGridView 中居中绘制图片的全面指南 引言 在现代的桌面应用程序中,用户界面的直观性和吸引力是至关重要的。Windows Forms (WinForms) 提供了丰富的控件来构建这样的界面,其中 DataGridView 是展示和操作数据的核心控件之一。本文将详细介绍如何在 WinForms…

uniapp-打包安卓APP流程

打包前所需要的配置 1. 图标配置 准备好对应的图标 在第一步选择该图标 然后点击自动生成所有图标 就会生成下面所有尺寸的图标 会自动存放至unpackage文件中 2. 启动页面配置 通用界面就是最基本的一个小图标加一个名称 自定义则是自己手动添加对应的启动图片 这里的图…

2023-南京荣耀Honor最新探访-OPEN DAY,实况记录!

前言 金九银十的秋招季缓缓落幕! 接完offer,博主也回归啦!有幸带着公开公平的心态,给大家分享一波南京荣耀总部的实况解密! 最基础的环境状况,有图有真相!~上图~ 民以食为天-南京荣耀食堂&…

C#中的协变和逆变

这两个都是只能使用在接口和委托上 个人理解: 协变:出参,让基类使用范围变大,将父类/基类当作子类一样使用 --为什么这样规定呢? 我的理解:真正实现的是子类,子类拥有所有的方法,却…

麒麟系统SP2 与昇腾300I芯片测试qwen7B模型记录

1. 查看系统版本 uname -a Linux localhost.localdomain 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux 2. 查看显卡 npu-smi info 前情提要: 官网给出支持昇腾910架构,刚好有300I资源…

java线程池执行任务时异常被吃掉

问题 今天在测试环境通过线程池执行任务时突然被中断,跟踪日志发现代码跑到一半后面的日志就不再打印,而且也没有任何异常堆栈信息,也就是说程序执行被中断了,后面反复尝试经排查发现是线程池使用不当导致。 测试验证 我们用线程…

〖Python网络爬虫实战㊸〗- 极验滑块介绍(五)

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…