0

0

在Java中如何理解对象的本质_JavaOOP设计思想说明

P粉602998670

P粉602998670

发布时间:2026-01-28 11:56:02

|

308人浏览过

|

来源于php中文网

原创

Java对象是「状态+行为+身份」三者绑定的运行时实体,而非内存地址或模板实例;其身份由JVM管理,==比较身份,equals默认也比身份,重写后可比状态。

在java中如何理解对象的本质_javaoop设计思想说明

Java 中的对象不是内存地址,也不是模板实例,而是「状态 + 行为 + 身份」三者绑定的运行时实体。

对象的本质是封装了状态与行为的独立个体

很多人初学时把 new Person() 理解为“复制一个模板”,这是错的。类只是描述,对象才是真实存在的个体——它有自己的一份字段值(状态),能执行自己的方法(行为),且在 JVM 中拥有唯一标识(System.identityHashCode() 可反映其身份)。

关键点:

  • == 比较的是身份(底层是引用指向的堆地址),不是内容;
  • equals() 默认行为也是比较身份,重写后才可能比较状态;
  • 同一个类可以产生无数个互不干扰的对象,各自维护自己的 nameage 等字段副本。

为什么不能把对象简单等同于“内存块”

虽然对象确实分配在堆上,但仅从内存角度理解会丢失 OOP 的设计意图。例如:

奇布塔
奇布塔

基于AI生成技术的一站式有声绘本创作平台

下载

立即学习Java免费学习笔记(深入)”;

  • 一个 BankAccount 对象不只是存着 balance 字段的内存,它还隐含“不允许透支”“余额变动需记日志”等约束逻辑;
  • 调用 account.withdraw(100) 不是“改一个数”,而是触发一整套受控的状态变迁;
  • JVM 可能对对象做标量替换、上分配等优化,甚至不落地到堆——但这些对开发者透明,不影响对象语义。

对象身份在多线程和持久化场景中特别关键

当多个线程共享一个 ArrayList 实例,或 Hibernate 把一个 User 对象映射到数据库时,“是不是同一个对象”直接影响行为:

  • 两个线程操作同一个 list 实例,add() 会竞争同一把锁(若同步);换成两个不同 ArrayList 实例,则完全隔离;
  • Hibernate 的一级缓存靠对象身份去重:两次 session.get(User.class, 1) 返回的是同一个 Java 对象引用,而非两个新对象;
  • 序列化前后,readObject() 恢复的是新对象,原身份丢失——这也是为什么 == 在反序列化后几乎总为 false

真正容易被忽略的是:对象的身份不可见、不可复制、不可预测,只在运行期由 JVM 统一管理。写代码时依赖 equals()hashCode() 契约,而不是假设“new 出来的就一定不同”或“字段一样就该相等”。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

143

2024.02.23

Hibernate框架介绍
Hibernate框架介绍

本专题整合了hibernate框架相关内容,阅读专题下面的文章了解更多详细内容。

84

2025.08.06

Java Hibernate框架
Java Hibernate框架

本专题聚焦 Java 主流 ORM 框架 Hibernate 的学习与应用,系统讲解对象关系映射、实体类与表映射、HQL 查询、事务管理、缓存机制与性能优化。通过电商平台、企业管理系统和博客项目等实战案例,帮助学员掌握 Hibernate 在持久层开发中的核心技能。

35

2025.09.02

Hibernate框架搭建
Hibernate框架搭建

本专题整合了Hibernate框架用法,阅读专题下面的文章了解更多详细内容。

65

2025.10.14

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

315

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

748

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

92

2025.08.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

395

2023.07.18

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

84

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.9万人学习

C# 教程
C# 教程

共94课时 | 7.8万人学习

Java 教程
Java 教程

共578课时 | 52.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号