在实践中,我能假设Java中的所有int数组都将以零开头吗?对于运行JVM的所有机器?
所有类型都是这样吗?查尔?布尔型?枚举?
这是官方记录在哪里?
我的教科书说int数组被设置为0,但他们也建议人们应该编写一个for循环来将所有的值设置为0,这只是“为了更清楚”。
发布于 2010-10-09 03:25:14
是。Java中的原始类型总是零初始化的。引用也初始化为null。
发布于 2010-10-09 03:43:31
你的课本错了!编写这样的代码是毫无意义的,而且是在浪费你键入它的时间和计算机运行它的时间。
正如其他人所说,编译器保证方法之外的变量(类/实例变量)被赋予0、false或null的值。正如你可能知道的那样,编译器不会给方法中的变量赋值,而是强制你在使用它们之前给它们赋值。
你会发现,如果你做的事情“正确”,大约90%-95%的“变量”在它们被赋予一个值后永远不会改变。然而,新程序员倾向于这样做:
int x = 0;
// some code that never uses x
x = 5;
// more code that only reads x and never modifies it.
这使您无法将x标记为“最终”。如果您能够将x标记为"final“,那么它可以防止意外修改该值,从而防止出现bug。
我会编写如下代码:
final int x;
// some code that never uses x
x = 5;
// more code that only reads x and never modifies it.
这被称为一个空的final (一个声明时没有值的final变量)。
如果您记得类/实例变量是由运行时初始化的,那么您希望不要编写代码来使用丢弃值来初始化它们,然后您可以将它们标记为final。
我个人的做法是总是将所有东西都标记为final,直到我发现需要修改它,并且在我知道我想要的实际值之前永远不初始化变量。这样做可以使代码更快(不明显,因为赋值通常非常快)和更安全,因为我很少在不应该修改值的时候意外修改值。
https://stackoverflow.com/questions/3893663
复制相似问题