为什么java新建一个对象,需要obj o = new obj()这种写法

为什么不能像 Python 那样直接 o = Obj() ,就完事了?

java 复制代码
Obj o = new Obj();
//  ↑    ↑
//  │    └─ ② 在堆内存中创建对象(运行时动作)
//  └────── ① 声明一个引用变量(编译期动作)

左边 Obj o:**声明一个类型为 Obj 的引用变量 o。**此时 o 还没有指向任何对象,它只是一个"能装 Obj 地址的盒子"。

右边 new Obj():真正在堆内存里分配空间、创建对象实例,并返回这个对象的内存地址。

中间的 =:**把这个地址赋给变量 o。**此后 o 就"指向"了那个对象。

相关推荐
星恒讯工业路由器1 小时前
工业网络设备选型:导轨式、机架式与车载式的部署差异
开发语言·网络·数据库·php·工业路由器·导轨式·车载式
2601_962885721 小时前
如何用 Python 把多只股票对齐成一张宽表?
开发语言·python
蹊黎4 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
驭渊的小故事4 小时前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
哦虎!9 小时前
【JavaEE】网络初识
java
for_ever_love__9 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
程序猿追10 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓10 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播10 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码