【问题标题】:What does "?" mean in Java? [duplicate]“?”是什么意思?在Java中是什么意思? [复制]
【发布时间】:2012-08-13 22:11:15
【问题描述】:
我不知道问号 (?) 在 java 中代表什么,我正在做一个小程序,一个 Nim 游戏。正在看一本书,寻求帮助,看到了这样的说法:
int pinsToTake = (min >= 2) ? 2 : 1;
我不明白,? 代表什么,它可以与 if 语句有关,但你把它放在一个变量中? : 可以是“其他”吗? (我刚才说的这件事很容易误导)
【问题讨论】:
标签:
java
ternary-operator
conditional-operator
【解决方案1】:
someval = (min >= 2) ? 2:1;
这称为三元运算符,可以用作if-else。这相当于
if((min >= 2) {
someval =2;
} else {
someval =1
}
关注tutorial 了解更多信息和用法。
【解决方案2】:
它的ternary operator也称为条件运算符,看看reference
点赞Object bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);
例如。 operand1 ? operand2 : operand3
- 如果operand1为真,则返回operand2,否则返回operand3
- operand1 必须是布尔类型
- operand1 可以是计算结果为布尔类型的表达式
- operand1 和operand2 必须是可提升的数字类型或可转换的对象引用,或者为空
- 如果operand2或operand3中的一个是字节,另一个是short,则返回值的类型将是short
- 如果操作数 2 或操作数 3 之一是字节、短或字符,而另一个是常量 int 值,将适合其他操作数
范围,返回值的类型将是另一个的类型
操作数
- 否则,将应用正常的二进制数字提升
- 如果操作数 2 或操作数 3 之一为空,则返回的类型将是另一个操作数的类型
- 如果操作数 2 和操作数 3 都是不同的类型,则其中一个必须与另一种类型兼容(可转换)
reference
【解决方案4】:
这是一个三元运算符。 Check Oracle's doc 了解更多信息。长话短说,它是一个 if-else 语句,可以在一行中完成并在方法内部使用并定义变量值。
语法:
boolean_expression ? do_if_true : do_if_false;
与 if-else 语句的并行性:
if(boolean_expression)
//do_if_true;
else
//do_if_false;
我没有故意使用括号,因为do_if_true和do_if_false中只能执行一行代码。
使用示例:
boolean hello = true;
String greetings = hello ? "Hello World!" : "No hello for you...";
这会将someString 设置为"Hello World!",因为布尔变量hello 的计算结果为真。另一方面,你可以嵌套这个表达式:
boolean hello = true;
boolean world = false;
String greetings = hello ? (world ? "Hello World!" : "Hello Stranger!") : "No hello for you...";
在这种情况下,问候语的值将是"Hello Stranger!";
【解决方案6】:
"? :" 是一个三元运算符,等效于 if else 语句。
在你的例子中:
pinsToTake = (min >= 2) ? 2 : 1
如果 min >= 2,则将 2 分配给 pinsToTake,否则分配 1
【解决方案7】:
max = (a > b) ? a : b;
(a > b) ?一:乙;是一个表达式,它返回 a 或 b 这两个值之一。
条件 (a > b) 已被测试。如果为真,则返回第一个值 a。如果为假,则返回第二个值 b。
返回哪个值取决于条件测试,a > b。条件可以是任何返回布尔值的表达式。
【解决方案8】:
它被称为条件运算符。这是它的工作原理。
如果 min 大于或等于 2,那么后面的第一个值?此处为 2 将分配给相应的变量,否则将分配此处为 1 的第二个值。
【解决方案9】:
This link 会告诉你所有你需要的。
存档摘要:
它被称为条件运算符。这是一个三元运算符
取三个词:
布尔表达式? Expr1 : Expr2
计算布尔表达式。如果是真的,价值
整个表达式是 Expr1。如果为假,则为整体的值
表达式为 Expr2。
所以它的用途与 if 语句相同,但它是
术语而不是整个陈述。这意味着您可以将其嵌入
不能使用完整语句的地方。