Java常用API 之 java.lang.Object类(附解析和示例)_02

Java学习八—常用包(类)之java.lang包 在Java中,package(包)是用来组织和管理类(class)的一种机制。包可以将相关的类进行分组,有助于代码的管理和组织。 阅读详情

了解Object是非常有必要的,Object类是Java里的根类,即Java其他类都使用Object类作为超类。

所有的对象(包括数组)都实现这个类的方法,Object类里的方法在任何对象上都可以使用。

----------------------------------------常用方法-----------------------------------------------

Object常用方法
protected  Object clone() 创建并返回此对象的一个副本,默认采用浅克隆的方式,如果子类需要深克隆,可以覆盖该方法。
boolean equals(Object obj)判断其他某个对象obj是否与此对象相等。
Class<?> getClass() 返回此 Object 的运行时类。
 int hashCode() 返回该对象的哈希码值。
 String toString()  返回该对象的字符串表示。


(1)protected  Object  clone( ) 

 protected native Object clone() throws CloneNotSupportedException

从Object类的源码中可以看出Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。Object的clone()方法采用浅克隆的方式。若子类有深克隆的需求,需实现cloneable接口,并覆盖clone( )方法。

浅克隆的复制方式为:对基础数据类型在内存里复制一份,对其他类型则采用引用的方式,所以浅克隆存在安全隐患。

Object类的clone()方法是一个native方法,native方法的效率一般来说都是远高于Java中的非native方法。这也解释了为什么要用Object中clone()方法而不是先new一个类,然后把原始对象中的信息复制到新对象中。Object.clone()方法返回一个Object对象。我们必须进行强制类型转换才能得到我们需要的类型。



(2)boolean  equals(Object obj)

public boolean equals(Object obj) 
{
        return (this == obj);
}

从源码可以看出,默认是调用==操作符去比较两个对象的地址,而不是对象的值。如果子类需要通过两个对象的值来判断对象是否相等,需在子类重写该方法。当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。我们很大部分时间都是进行两个对象的比较,这时Object的equals()方法就满足不了需求,实际上JDK中,String、Math等封装类都对equals()方法进行了重写。

(3)Class<?> getClass( ) 

//源码
public final native Class<?> getClass();

public class Test //实例
{
	public static void main(String[] args) 
	{
		String str= new String();  
		System.out.println(str.getClass());  
	}
}
//输出
class java.lang.String
(4)int hashCode( ) 
public native int hashCode();

Object本地实现的hashCode()方法计算的值是底层代码的实现,采用多种计算参数,返回的并不一定是对象的(虚拟)内存地址,具体取决于运行时库和JVM的具体实现。

重写hashCode()方法的基本规则:

    在 Java 应用程序执行期间,对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数。
    如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象调用 hashCode 方法都必须生成相同的整数结果。


(5)String  toString() 

public String toString()//源码
{
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成,并不是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。


Java中lang包的常用方法介绍 JAVA API(图片来源:实验楼) 包装类 Integer包装类 方法 返回值 功能描述 byteValue() byte 以 byte 类型返回该 Integer 的值 intValue() int 以 int 型返回此 Integer 对象 zebra stripes are neat 以 int 型返回此 Integer 对象 toString() String 返回一个表示该 Inte... 阅读详情

相关推荐

普罗米修斯监控达梦数据库集群

-----------------------------------新增文件---------------------------------------注:图上即为启动成功,如果没有问题,则使用nohup后台启动程序。官网地址:https://github.com/gy297879328/dameng_exporter。注:prometheus的对数据库的指标采集如果高于60s一次,请手动修改提供表盘中的计算值。修改dameng_exporter.config配置文件,修改账号密码的部分。

weixin_49985403的博客 1682

JAVA中的Object类

在 Java 中,Object类是所有类的父类,也就是说 Java 的所有类都继承了Object,Object。Object 类是在java.lang包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类。Object类可以,也可以:显式继承。

vincent_vang的博客 2640

BetaFlight开源飞控源码分析

BetaFlight是穿越机领域比较成熟的开源飞控,本篇文章主要分析一下源代码以及如何使用这个开源代码

weixin_43811044的博客 1万+

java.lang.Object数组收集与重新定义

在Java中,子类只能继承一个父类,如果定义类时没有使用 extends关键字指定继承任何类,那一定是继承java.lang. object也就是说,如果这样定义类: public class Some{ ... } 复制代码那就相当于撰写: public class Some extends Object{ } 复制代码因此在Java中,任何类追溯至最上层父类一定就是java.lang. Obj...

weixin_34232363的博客 459

视觉测量实战:C#上位机+OpenCVSharp 实现工业零件尺寸自动检测(精准像素级,工业级可落地)

本次开发的上位机界面遵循工业现场操作规范简洁、直观、按钮大、文字清晰、参数可视化调节,操作人员为车间工人/质检员,无需复杂操作,所有控件均为WinForms原生控件,拖拽即可完成布局本次实战完成了C#上位机+OpenCVSharp 工业零件尺寸自动检测系统的完整开发,这套方案是工业视觉测量的标准落地方案,适配95%的规则几何零件的尺寸检测场景,从五金件、塑胶件到电子元件,全覆盖无死角。测量效率提升100倍、精度提升10倍、无人工误差、可适配流水线实时检测。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 849

学Simulink--基于高比例可再生能源渗透的复杂电网建模场景实例:新能源高渗透下传统同步机主导系统的动态响应建模

摘要:本文详细介绍使用MATLAB/Simulink构建高比例可再生能源渗透的电网系统模型。主要内容包括:系统结构设计(新能源发电、同步发电机、电网等模块)、详细建模步骤(从创建项目到集成各模块)、关键控制算法实现(如MPPT和调速器控制)以及仿真分析。通过该模型可研究新能源高渗透率下传统同步机系统的动态响应特性,为电力系统稳定性分析提供有效工具。文章包含示例代码和典型仿真结果,展示了频率、电压等关键参数的稳定性表现。

xiaoheshang_123的博客 86

object用法java_Java面向对象之Object类的使用

1 - Object类的介绍/*java.lang.Object类1 - Object类是所有Java类的根父2 - 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object3 - Object类中的功能(属性、方法)就具有通用性属性:无方法:equals() / toString() / getClass() / hashCose() / clone()...

weixin_35511854的博客 771

【LLM评估篇】Ceval | GAIA | MMLU benchmarks

- 一些大模型的评估模型: - 多轮:MTBench - 关注评估:agent bench - 长文本评估:longbench,longeval - 工具调用评估:toolbench - 安全评估:cvalue,safetyprompt等 本文还介绍了其他主流的大模型评估指标等及其使用

发现问题,并解决问题,批判性思维 6947

解析java中的Object类(一)

本文解析了java中的Object类(一),该Object类是位于java.lang下的Object类

SSS4362的博客 990

为什么devc++编译项目会失败?提示gcc无法正常启动...

根据你的描述,编译能正常进行时,只打开源文件并没有问题,问题主要出现在创建项目后编译失败,这通常与 Makefile 配置、环境变量、编译器路径设置等因素有关。你可以检查 Makefile 配置,验证 DevC++ 的编译器环境设置,或者尝试清理并重新配置项目。如果问题仍然存在,可以尝试重装 DevC++ 或重新配置工具链。希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1376

把 SAP Workflow 的 Task 搞懂:从 TS 到 WS 的建模、触发与排错全景

摘要:SAP Business Workflow中的Task是工作流设计的核心单元,分为single-step(独立执行)和multistep(流程编排)两种类型。Task设计直接影响流程的可复用性、扩展性和可排错性。系统将Task分为5类(TS/T/WS/WF/TG),运行时通过事件触发、Linkage匹配、Work Item执行的链路完成流程驱动。关键事务码包括PFTC_INS(创建Task)、SWE2(事件配置)等。正确设计Task边界并遵循"先业务提交后事件触发"原则,是构建稳定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

Java中获取Object中的值的方法

例: Object object = {name:“张三”,age:23} 代码实现: Map entity = (Map)object; //获取object中name的值: String name = entity.get("name").toString(); //获取object中age的值 int age = Integer.valueOf(entity.get("age")); 原文链接:https://blog.csdn.net/jiandan7410/article/details/119

Smilelfq的专栏 2万+

Visual Studio Code ADT Extension 能不能连接 ECC,答案是可以,但真正的门槛在 ABAP 后端版本

Visual Studio Code 版 ABAP Development Tools(ADT)支持连接传统 SAP ECC 系统,关键不在于系统名称,而在于底层 SAP NetWeaver AS ABAP 版本是否达到最低要求(7.31 SP04 及以上)。只要系统已支持 Eclipse ADT,即可无缝使用 VS Code ADT,无需升级后端。SAP 通过复用原有 ADT 技术栈,将兼容性逻辑置于客户端,实现对老系统的持续支持。尽管初期侧重 ABAP Cloud 模型,但 1.1 及后续版本已全面覆盖

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 51

【Java】20.常用API之lang.Object类

Java.lang包 java.lang是基础的语言包,包含了Java程序设计语言最基础的类,使用频繁,系统默认自动导入。 Interfaces:Appendable、AutoCloseable、Cloneable、Comparable、Iterable、Runnable... Classes:Boolean、Byte、Class、Double、Enum、Float、Inteage、L...

Faceno 1167

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java API 基础

Java API 基础 一、相关知识学习   Java程序员在开发Java程序时,只需要安装有JDK,就可以在程序中使用import关键字导入Java API 中指定的包并在自己的程序中使用这些包中定义的各种类和接口。 1、 Java API 包 Java API 包 说明 java.accessibility 接口组件和助手技术的类和接口 java.applet Java A...

杨丙的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

为什么不导包,因为我有java.lang

Java 8引入的新的日期和时间API,提供了更加易用和更加灵活的日期时间处理类,如LocalDate​、LocalTime​、LocalDateTime​、ZonedDateTime​、Duration​、Period​等。重要的类有File​、FileInputStream​、FileOutputStream​、BufferedReader​、PrintWriter​、InputStream​、OutputStream​等。功能,包括安全的随机数生成、加密、摘要、签名等。

謬熙的博客 1243

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Java 常用类】java.lang包(1)Object类的常用方法

文章目录一、大纲二、构造器1.Object()三、常用方法1.toString()相关链接 一、大纲 结构:public class Object 二、构造器 1.Object() 没有参数。 Object object = new Object(); 三、常用方法 1.toString() 没有参数 返回:返回一个字符串:类名+@+此对象哈希码的无符号十六进制 Object o...

长生的梦呓 850

Java常用类API(包装类、时间类、数学类 超详细)

本文介绍了Java常用类API,包括日期类Date、数学类Math、包装类的概念、方法的使用和注意事项。还有例子与习题。

weixin_52176709的博客 964

Java.lang 包 (包装类、String类、Math类、Class类、Object类)

Java 的核心 API(Application Programming Interface)是非常庞大的,这给开发者带来了很大的方便。 java.lang 包是 Java 的核心类库,它包含了运行 Java 程序必不可少的系统类,系统会自动加载,并不需要 import 关键字引入。 包装类 Java 中的基本数据类型不是面向对象的,不能定义基本类型的对象。但是 Java 为...

dlei7655的博客 304

java笔记【Object类、常用API】

目录第一章 Object类1.1 概述1.2 toString方法方法摘要覆盖重写1.3 equals方法方法摘要默认地址比较对象内容比较1.4 Objects类第二章 日期时间类2.1 Date类概述常用方法2.2 DateFormat类构造方法格式规则常用方法format方法parse方法2.3 练习2.4 Calendar类概念获取方式常用方法get/set方法add方法getTime方法第...

Ethanpig 506

Object类和常用API

目录思维导图java.lang.Object类java.util.Date类java.text.DateFormat类java.util.Calendar类java.lang.System 类java.lang.StringBuilder类包装类 思维导图 java.lang.Object类 类 Object 是类层次结构的根(父)类。 每个类(Person,Student...)都使用 Obj...

lite的博客 661

[JDK核心API教程]java.lang 包

此博文转自实验楼,为个人记录笔记,非原创。。。 一、Java API 简介 Java 的核心 API 是非常庞大的,这给开发者来说带来了很大的方便。所谓的 API 就是一些已经写好、可直接调用的类库。Java 里有非常庞大的 API,其中有一些类库是我们必须得掌握的,只有熟练掌握了 Java 一些核心的 API,我们才能更好的使用 Java。 &emsp 在程序中,java.

DavidChen的博客 2129

Java常用API 之 java.lang.Math类(附解析和示例)_01

Math类直接继承Object类:public final class Math extends Object    Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。java.lang包内有一个名为StrictMath类,StrictMath类和Math类有很多同名方法。在默认情况下,很多 Math 类方法直接调用 StrictMath中的等价方法来完成。    为...

coder__666的博客 1483

【达内课程】JAVA常用API:java.lang.Object、java.lang.String

达内课程-API(java.lang.Object和java.lang.String)

Errol's Blog 890

Java学习八—常用包(类)之java

java.lang​ 包是 Java 程序中最基本和最核心的包。它包含了 Java 编程语言的基础类,这些类是每个 Java 程序的构建块。由于其重要性,java.lang​ 包中的类被自动导入到所有的 Java 程序中,无需显式地使用import​ 语句。‍java.lang包是java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。‍​ 是 Java 语言中所有类的根类。

2301_82244623的博客 1215

06. 详解 Java 的 Object 类和常见类

new 每次都会创建一个新对象,而除了 Float 和 Double 外的其他包装类,都会缓存包装类对象,减少需要创建对象的次数,节省空间,提升性能。在前面,我们提到,创建包装类对象时,可以使用静态的 valueOf 方法,也可以直接使用 new,但建议使用 valueOf 方法,为什么呢?包装类与基本类型的转换代码结构是类似的,每种包装类都有一个静态方法 valueOf(),接受基本类型,返回引用类型,也都有一个实例方法 xxxValue() 返回对应的基本类型。方法,可以进行包装对象的比较。

acc8226的专栏 1212
上一篇: Java常用API 之 java.lang.Math类(附解析和示例)_01
下一篇: PAT乙级Java实现_1001. 害死人不偿命的(3n+1)猜想_附详细解题注释_01
coder__666
博客等级 码龄9年 42粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值