带有表达式的Java Array声明

时间:2012-09-04 04:47:37

标签: java arrays

这可能是一个微不足道的问题,但我遇到了一个阵列声明的语法:

   void someFunction(int n){
      int[] myArray = new int[ n == 0 ? 1 : n ];
      ...
   }

我尝试在网上查找一些教程,以了解发生的事情,但没有运气 任何人都可以解释右括号中的表达式,什么时候通常使用?

6 个答案:

答案 0 :(得分:5)

正确的表达是'if /(then)/ else'

的'快捷方式'

表达式的第一部分是'if',条件并且可以(但不一定)包括在括号中,以便澄清。

然后来了?,说“条件结束,结果是什么?” 之后是“真实”陈述,而冒号之后是“其他”陈述。

简而言之,这意味着:如果n == 0,则分配一个大小为1的数组,否则分配n个元素。

这是一种相当常见的c语法,也是缩短变量赋值的好方法,但与每个定义的数组没有任何关系。

答案 1 :(得分:2)

它基本上是if / else的语法糖。 Here's a link

答案 2 :(得分:1)

这是一个三元运营商。评估?之前的布尔语句,如果是,则表达式计算为:之前的值,否则计算结果为第二个值。

答案 3 :(得分:1)

这是一个长度为5的数组的简单声明:

int[] myArray = new int[5];

n == 0 ? 1 : n提供了一个数字(1如果n == 0n,如果没有),它就是ternary operator的示例。

所以

int[] myArray = new int[ n == 0 ? 1 : n ];

的简写
int[] myArray;

if (n == 0) {
  myArray = new int[1];
} else {
  myArray = new int[n];
}

答案 4 :(得分:1)

java三元运算符(?)用于检查n是否为0.如果n为零,则创建大小为1的数组。

如果n> 1,则使用它来创建数组。零长度数组在java中是合法的,因此不确定作者的意思。

如果要保护in的错误值应该检查n > 0 ? n :1,那么即使负值也会得到一个大小为1的数组

答案 5 :(得分:1)

正如@ATaylor和@SperanskyDanil所说, 语法将在n=0时创建 size 1 的数组,并在n时创建大小为n != 0的数组。
如下图所示。
enter image description here