“X?a:b”表示法的含义是什么?

时间:2012-10-25 17:52:24

标签: java syntax

  

可能重复:
  What is the Java ?: operator called and what does it do?

在某些代码中,?用于执行数学方程式。

它是什么以及如何使用它?是否有可能提供一个例子和方程式最终答案的原因?

int count = getChildCount();
int top = count > 0 ? getChildAt(0).getTop() : 0;

8 个答案:

答案 0 :(得分:9)

基本上是三元运算符:

String mood = (isHappy == true)?"I'm Happy!":"I'm Sad!"; 

如果isHappy,那么“我很开心!”。 “我伤心!”否则。

答案 1 :(得分:4)

我认为你的意思是x = () ? y : z;符号?如果是这种情况,那么括号内的表达式将被评估为布尔值,如果true x = yx = z

答案 2 :(得分:4)

int count = getChildCount();
int top = count > 0 ? getChildAt(0).getTop() : 0;

表示如果getChildAt(0).getTop()变量大于0,则top变量将包含count的值,否则它将等于0

答案 3 :(得分:2)

我的猜测是你指的是ternary operator,就像这样使用:

<some condition> ? <some value> : <some other value>;

例如:

int max = a > b ? a : b;

这是if的简写,相当于:

int max;
if (a > b) {
    max = a;
} else {
    max = b;
}

但允许在代码中使用单行结果。

如果使用得当,由于其简洁性,它可以使代码更加清晰。但是,如果行变得太长或太复杂,建议谨慎行事:当条款简短时,代码只能保持可读性。

答案 4 :(得分:0)

评估表达式中的?称为三元运算符。它基本上是if() ... else块的简写。

http://en.wikipedia.org/wiki/%3F

答案 5 :(得分:0)

我假设你指的是ternary operator。它是某些if语句的简写。你在哪里做作业,比如:

int dozen = (bakersDozen) ? 13 : 12;

假设bakersDozen为真,则dozen为13.如果为假,则为12。

答案 6 :(得分:0)

int result = (a > b) ? 1 : 0;

相同
int result;
if (a > b)
  result = 1;
else
  result = 0;

答案 7 :(得分:0)

?通常是三元(或三级)运算符。所以让我们来解释它在做什么。

myValue = (a = b) ? 1 : 0;

第一部分是你的病情。 “等于b吗?”

第二部分是真实的回应。

第三部分是虚假回应。

因此,如果a等于b,则myValue将为1.如果a不等于b,则myValue将为0.

请参阅http://en.wikipedia.org/wiki/Ternary_operation