首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我们可以在Java中使用缺省数组值吗?例如,假设一个int数组被设置为全零?

我们可以在Java中使用缺省数组值吗?例如,假设一个int数组被设置为全零?
EN

Stack Overflow用户
提问于 2010-10-09 03:23:38
回答 2查看 67.1K关注 0票数 78

在实践中,我能假设Java中的所有int数组都将以零开头吗?对于运行JVM的所有机器?

所有类型都是这样吗?查尔?布尔型?枚举?

这是官方记录在哪里?

我的教科书说int数组被设置为0,但他们也建议人们应该编写一个for循环来将所有的值设置为0,这只是“为了更清楚”。

EN

回答 2

Stack Overflow用户

发布于 2010-10-09 03:25:14

是。Java中的原始类型总是零初始化的。引用也初始化为null。

票数 17
EN

Stack Overflow用户

发布于 2010-10-09 03:43:31

你的课本错了!编写这样的代码是毫无意义的,而且是在浪费你键入它的时间和计算机运行它的时间。

正如其他人所说,编译器保证方法之外的变量(类/实例变量)被赋予0、false或null的值。正如你可能知道的那样,编译器不会给方法中的变量赋值,而是强制你在使用它们之前给它们赋值。

你会发现,如果你做的事情“正确”,大约90%-95%的“变量”在它们被赋予一个值后永远不会改变。然而,新程序员倾向于这样做:

代码语言:javascript
复制
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。

我会编写如下代码:

代码语言:javascript
复制
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,直到我发现需要修改它,并且在我知道我想要的实际值之前永远不初始化变量。这样做可以使代码更快(不明显,因为赋值通常非常快)和更安全,因为我很少在不应该修改值的时候意外修改值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3893663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档