2

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

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

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

4

6 回答 6

5

正确的表达式是“if/(then)/else”的“捷径”

表达式的第一部分是 'if',条件和可以(但不是必须)包含在括号中,以进行澄清。

然后是?,说明“条件结束,结果是什么?” 之后是“true”语句,冒号之后是“else”语句。

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

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

于 2012-09-04T04:51:18.897 回答
2

它基本上是 if/else 的语法糖。这是一个链接

于 2012-09-04T04:50:32.330 回答
1

它是一个三元运算符。之前的布尔语句?被评估,如果为真,则表达式被评估为 之前的值:,否则它评估为第二个值。

于 2012-09-04T04:51:09.503 回答
1

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

int[] myArray = new int[5];

n == 0 ? 1 : n提供一个数字(1如果n == 0n如果不是),它是三元运算符的一个示例。

所以

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

是简写

int[] myArray;

if (n == 0) {
  myArray = new int[1];
} else {
  myArray = new int[n];
}
于 2012-09-04T04:51:24.377 回答
1

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

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

如果它为了防止 in 的坏值应该一直在检查n > 0 ? n :1,所以即使是负值也会得到一个大小为 1 的数组

于 2012-09-04T04:52:19.270 回答
1

正如@ATaylor 和@SperanskyDanil 所说,
Syntax 将创建大小为 1n=0的数组,它会创建大小为n, when的数组n != 0
如下图所示。
在此处输入图像描述

于 2012-09-04T05:56:19.910 回答