java - 原语是否分配了内存地址?

标签 java primitive

我试图理解一个原始类型在后台的声明和赋值过程。

  1. int i;
  2. i = 3;

对于1),在内存栈上分配了一 block 空间,用来存放一个名为i的int类型值 对于2),它把值3赋给上面保留的空间

那里有内存地址吗? 在我的印象中,内存地址总是与堆上的对象相关联?

更新:

关于回复:

因此,对于堆栈上的每个变量,它们都被分配了一个内存地址,就像堆上的对象一样。我说得对吗?

但是对于Java,不是这样的吗?

最佳答案

并不总是涉及地址。如果编译器发现它们的地址从未被程序员使用,则编译器可以将变量放入寄存器。所以你不需要访问主内存。例如,在您上面的代码中,编译器可以生成的内容可以像

这样简单
add $2, $0, 3

将值 3 放入寄存器 2。一旦您创建了一个指针并使其指向该变量,那么实际上您就有了一个地址。然后变量不能再只在寄存器中。

关于java - 原语是否分配了内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316194/

相关文章:

java - 如何从外部jar自动运行java任务?

c++ - RPC 调用返回一个递增的值而不是 ULONG_PTR

java junit测试用例不一致

java - 前缀字符串资源标识符以在运行时选择替代版本

java - 从 Tomcat7 迁移到 Jetty (Catalina.base)

java - 如何使用java在netbeans输出中显示网站中的文本

java - 动态克隆 android Activity ?

javascript - 是否有必要取消垃圾收集的原始值?

java - 方法调用后原始局部变量会发生什么?

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