这可能是一个微不足道的问题,但我遇到了数组声明的这种语法:
void someFunction(int n){
int[] myArray = new int[ n == 0 ? 1 : n ];
...
}
我尝试在网上查找一些教程,以了解发生了什么没有运气。
任何人都可以解释右括号中的表达式,什么时候通常使用类似的东西?
正确的表达式是“if/(then)/else”的“捷径”
表达式的第一部分是 'if',条件和可以(但不是必须)包含在括号中,以进行澄清。
然后是?,说明“条件结束,结果是什么?” 之后是“true”语句,冒号之后是“else”语句。
简而言之,这意味着:如果 n == 0,分配一个大小为 1 的数组,否则分配 n 个元素。
这是一种相当常见的 c 语法,也是缩短变量赋值的好方法,但实际上与每个定义的数组没有任何关系。
它基本上是 if/else 的语法糖。这是一个链接
它是一个三元运算符。之前的布尔语句?
被评估,如果为真,则表达式被评估为 之前的值:
,否则它评估为第二个值。
这是长度为 5 的数组的简单声明:
int[] myArray = new int[5];
n == 0 ? 1 : n
提供一个数字(1
如果n == 0
和n
如果不是),它是三元运算符的一个示例。
所以
int[] myArray = new int[ n == 0 ? 1 : n ];
是简写
int[] myArray;
if (n == 0) {
myArray = new int[1];
} else {
myArray = new int[n];
}
它是java三元运算符(?)用于检查n是否为0。如果n为零,则创建大小为1的数组。
如果 n 为 >1 ,则使用它来创建数组。零长度数组在 java 中是合法的,所以不确定作者在这里的意思。
如果它为了防止 in 的坏值应该一直在检查n > 0 ? n :1
,所以即使是负值也会得到一个大小为 1 的数组
正如@ATaylor 和@SperanskyDanil 所说,
Syntax 将创建大小为 1n=0
的数组,它会创建大小为n
, when的数组n != 0
。
如下图所示。