java - Java原语可以被认为是轻型对象吗

标签 java object heap-memory primitive

<分区>

根据这个答案here

Java 对象和原语都在堆上。那么从 JVM 的角度来看,对象和原语除了对象在堆上占用更多空间外是否相似?本质上,图元只是“轻”对象吗?

最佳答案

Java 基元不是“轻型对象”。他们是原始人。它们作为对象在两个非常重要的方面失败了:它们不能进入 Collection 对象并且它们没有方法。

它们也不在堆上,除非作为实际 Java 对象的字段。你不能做 new int。另请注意,当您声明原始类型的局部变量时,该变量就会存在。当你声明一个对象类型的局部变量时,你得到的只是一个对象的引用,但它被设置为 null 并且声明类型的对象不会通过简单地声明变量来分配。

请注意 autoboxing稍微模糊了区别,但区别肯定存在。

关于java - Java原语可以被认为是轻型对象吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18048745/

相关文章:

java - 修改 Java SWT 浏览器用户代理

java - 显示分配堆栈跟踪时防止程序崩溃

java - launch4j:通过命令行覆盖默认 JVM 堆大小

java - Jenkins 未知错误: cannot find Chrome binary

java - 构建两个build.gradle文件,第二个build.gradle的文件路径错误

javascript - 更好的 jQuery 对象过滤

PHP:从对象中获取数据

javascript - 按空属性/条目过滤对象

memory-management - 无法使用 JStat 连接到远程 JVM

java - Android 在发出多个 http 请求时增加堆 fragment 情况