【发布时间】:2012-05-17 13:11:05
【问题描述】:
在 Java 中摆弄时,我初始化了一个负长度的新字符串数组。 即 -
String[] arr = new String[-1];
令我惊讶的是,编译器并没有抱怨它。 谷歌搜索没有提出任何相关的答案。谁能解释一下这个问题?
非常感谢!
【问题讨论】:
-
编译器不检查数组的大小,但是如果大小为负则抛出java.lang.NegativeArraySizeException
-
String[] arr = new String[someNumberThatMightOrMightNotBeNegative];- 在编译时检查那个,我敢! -
@Izkata - 我做到了,使用 Eclipse,但它仍然非常满意(即 - 没有警告或任何东西)
-
@TomTeman 你误会了。编译器必须实际运行代码来确定数字是否为负数,即使这样,它也必须尝试所有可能的代码路径,包括所有可能的输入,以确定这个数字是否为负。这简直是不可能的。因此语言设计者决定在运行时进行检查,因为这会同时捕获您在问题中的版本和我上面评论中的版本。
-
大声笑..简单的答案..切换到 C#
标签: java arrays compilation