【发布时间】:2014-12-12 06:25:06
【问题描述】:
我搜索了互联网,但没有找到满意的答案。在本地化实例中,如果我有代码:
public static void main (String args[])
{
int x;
System.out.println(x);
}
...它不会编译,因为 Java 编译器会警告我 x 应该被初始化。我明白了。
我的问题是,Java 真的会为整数 x 留出 4 个字节的内存吗?如果是这样,它会清除那块内存吗?它是否将其定义为 NULL(我不这么认为,因为 NULL 和 int 是不兼容的类型)?还是int x 的内存地址仍然保留最后存储在内存中的值,还是x 只是简单地“没有值”?
我知道以上内容在 C 中有效,而在 C 中,它只会打印出该内存块中的任何内容。我想知道 Java 是如何处理这个问题的。
===编辑===
好的,好的。出于某种原因,我的基本编程知识完全不在我的脑海中,因为当程序无法编译时,内存分配问题是无关紧要的,正如发布答案的两位成员所指出的那样。 (提示脸)
如果我有代码怎么办:
public static void main (String args[])
{
int x;
}
那么整数x在内存中是如何解析的呢?
【问题讨论】:
-
如果你把
x声明放在 main 之外(并使其成为静态),它将编译并且 x 仍将未初始化。它应该打印 0。 -
如果程序一开始没有编译,你如何理解程序如何在内存中分配变量?
-
如果是局部变量,必须初始化,如果不是局部变量,不指定会自动初始化为0。
标签: java memory default default-value