登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Java 创建对象的 6 种方式 + 底层原理(面试必考) ...
Java 创建对象的 6 种方式 + 底层原理(面试必考)
[ 复制链接 ]
高小雨
2026-3-5 20:35:02
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
Java 创建对象的 6 种方式(底层 + 面试版)
一、6 种创建方式总览
new 关键字
Class.newInstance ()(反射,已废弃)
Constructor.newInstance ()(标准反射)
clone () 克隆
反序列化
Unsafe.allocateInstance ()(底层)
二、详细说明(Markdown 格式)
1. new 关键字(最常用)
User user = new User();
调用构造方法
最直观、最常用
触发 JVM 类加载 + 内存分配 + 初始化
2. Class.newInstance ()(反射,废弃)
User user = User.class.newInstance();
反射创建
必须有无参构造
JDK9 已废弃
3. Constructor.newInstance ()(推荐反射方式)
Constructor ctor = User.class.getConstructor();
User user = ctor.newInstance();
灵活:支持有参 / 无参
推荐使用
会调用构造方法
4. Object clone ()(克隆)
User user1 = new User();
User user2 = (User) user1.clone();
不调用构造方法
浅拷贝
必须实现 Cloneable 接口
5. 反序列化
ObjectInputStream ois = new ObjectInputStream(...);
User user = (User) ois.readObject();
从流中恢复对象
不调用构造方法
必须实现 Serializable
6. Unsafe.allocateInstance ()(JVM 底层)
Unsafe unsafe = Unsafe.getUnsafe();
User user = (User) unsafe.allocateInstance(User.class);
完全不调用构造方法
只分配堆内存,不初始化
属于 JVM 底层机制
三、哪些调用构造方法?哪些不调用?
✅ 调用构造方法
new
Class.newInstance()
Constructor.newInstance()
❌ 不调用构造方法
clone()
反序列化
Unsafe.allocateInstance()
四、JVM 创建对象底层流程(面试必考)
检查类是否已加载
堆内存分配
初始化零值(成员变量默认值)
设置对象头(Mark Word、指针、锁信息、GC年龄)
执行构造方法 ()
五、Java 对象内存布局(JVM 必考)
对象头(Header)
→ Mark Word
→ 类型指针
实例数据(Instance Data)
→ 成员变量
对齐填充(Padding)
→ 保证 8 字节对齐
六、面试终极答案:new 对象时 JVM 做了什么?
检查类加载
堆分配内存
零值初始化
设置对象头
执行构造方法
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Java
创建
对象
方式
底层
相关帖子
Java SE 和 Java EE 的核心功能模块
java String为什么不可变
关于我使用MinMix创建了一个Tailwindcss学习网站
利用SWIG实现JAVA调用C/C++代码
低代码 + AI = 对话方式生成UI
公司新招了个 5 年 Java,开工第一天就被劝退了。。
Java 操作 Markdown(1)--commonmark-java 使用
类字节码:揭开Java虚拟机运行机制的神秘面纱
vxe-table 给单元格加样式的方式详解,支持 style 和 className 的方式给单元格加样式
[AI应用框架/Java] Spring AI 应用开发指南
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Java SE 和 Java EE 的核心功能模块
2
428
蔬陶
2026-03-05
业界
java String为什么不可变
4
891
髡芯
2026-03-05
业界
关于我使用MinMix创建了一个Tailwindcss学习网站
2
267
赶塑坠
2026-03-06
安全
利用SWIG实现JAVA调用C/C++代码
0
452
沦嘻亟
2026-03-07
业界
低代码 + AI = 对话方式生成UI
1
320
屠焘
2026-03-09
安全
公司新招了个 5 年 Java,开工第一天就被劝退了。。
0
52
士沌
2026-03-10
代码
Java 操作 Markdown(1)--commonmark-java 使用
0
366
哈梨尔
2026-03-12
业界
类字节码:揭开Java虚拟机运行机制的神秘面纱
0
200
坪钗
2026-03-13
代码
vxe-table 给单元格加样式的方式详解,支持 style 和 className 的方式给单元格加样式
0
29
役魅肋
2026-03-13
业界
[AI应用框架/Java] Spring AI 应用开发指南
0
10
阮蓄
2026-03-20
回复
(2)
笙芝
2026-3-8 13:14:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
支智敏
2026-3-12 04:30:40
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
软件
问答
代码
签约作者
程序园优秀签约作者
发帖
高小雨
2026-3-12 04:30:40
关注
0
粉丝关注
30
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9912
7
宋子
9878
8
荪俗
9016
9
闰咄阅
9995
10
刎唇
9995
查看更多
今日好文热榜
506
【节点】[SampleTexture3D节点]原理解析与
166
记一次Webshell流量分析 | 添柴不加火
975
旧安卓手机部署openclaw
631
AI编程时代,35岁以上程序员将何去何从?
827
[Refactor]CPP Learn Data Day 1
0
Block Copy 的内存布局详解
613
把 Flask 搬进 ESP32,高中生自研嵌入式 We
5
渐得如意智能自动化办公平台——定义属于你
889
[AI/Agent/社交] AI Agent社交网络产品:Mo
526
C++协程入门
284
TCSSOFTDEPTCOPY.zip Can download source
801
Vue3 + Iframe 实战:打造企业级流程配置中
823
“你用AI,那我也会用AI,我还要你干什么?
621
自感痕迹论:先验意义场域与经验痕迹内外
9
一道KMP统考真题彻底讲透:nextval与滑动距
7
一道KMP统考真题彻底讲透:nextval与滑动距
741
从 Clubhouse 的崛起与陨落,看语聊房 RTC
244
老马失前蹄,竟然在数据库外键上翻车了,重
8
老马失前蹄,竟然在数据库外键上翻车了,重
7
老马失前蹄,竟然在数据库外键上翻车了,重