什么"?" 用Java表示?

Ale*_*ein 10 java ternary-operator conditional-operator

我不知道问号(?)在java中代表什么,我正在做一个小程序,一个Nim游戏.正在寻找一本书,寻求帮助并看到这句话:

int pinsToTake = (min >= 2) ? 2 : 1;
Run Code Online (Sandbox Code Playgroud)

我不明白,它?代表什么,它可以与if语句有关,但你把它放在变量中?而且:可以是"其他"的东西?(我刚才所说的这些事情可能会产生误导)

Nan*_*ale 24

someval =(min> = 2)?2:1;

这被称为三元运算符,可以用作if-else.这相当于

if((min >= 2) {
   someval =2;
} else {
   someval =1
}
Run Code Online (Sandbox Code Playgroud)

请阅读本教程以获取更多信息和用法.

  • @Alexein:不要谢谢,[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work):-) (9认同)

Har*_*ngh 8

它ternary operator也被称为条件运算符,有一个参考

喜欢 Object bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);

例如. operand1 ? operand2 : operand3

  • 如果operand1为true,则返回operand2,否则返回operand3
  • operand1必须是布尔类型
  • operand1可以是一个求值为布尔类型的表达式
  • operand1和operand2必须是可升级的数字类型或可转换对象引用,或者为null
  • 如果operand2或operand3中的一个是一个字节而另一个是short,则返回值的类型将为short
  • 如果operand2或operand3中的一个是byte,short或char而另一个是一个常量int值,它将适合其他操作数范围,则返回值的类型将是另一个操作数的类型
  • 否则,正常的二进制数字促销适用
  • 如果operand2或operand3之一为null,则返回的类型将是另一个操作数的类型
  • 如果operand2和operand3都是不同的类型,则其中一个必须与另一个类型引用兼容(可转换)