Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是问号&引用;和冒号“:&引用;接线员用来做什么?_Java_Operators_Ternary Operator_Conditional Operator - Fatal编程技术网

Java 什么是问号&引用;和冒号“:&引用;接线员用来做什么?

Java 什么是问号&引用;和冒号“:&引用;接线员用来做什么?,java,operators,ternary-operator,conditional-operator,Java,Operators,Ternary Operator,Conditional Operator,关于使用问号“?”和冒号的两个问题:“打印函数括号内的运算符:它们的作用是什么?”?还有,是否有人知道它们的标准术语,或者我在哪里可以找到更多关于它们使用的信息?我读到它们类似于“if”“else”语句 int row = 10; int column; while (row >= 1) { column = 1; while(column <= 10) { System.out.print(row % 2 == 1 ? "<" : "\

关于使用问号“?”和冒号的两个问题:“打印函数括号内的运算符:它们的作用是什么?”?还有,是否有人知道它们的标准术语,或者我在哪里可以找到更多关于它们使用的信息?我读到它们类似于“if”“else”语句

int row = 10;
int column;
while (row >= 1)
{
    column = 1;
    while(column <= 10)
    {
        System.out.print(row % 2 == 1 ? "<" : "\r>");
        ++column;
    }
    --row;
    System.out.println();
}
int行=10;
int列;
而(行>=1)
{
列=1;
while(column这是可以在任何地方使用的,不仅仅是print语句。它有时被称为“三元运算符”,但只是最常见的一个

下面是一个来自维基百科的好例子,演示了它是如何工作的:

在C、Java和JavaScript中编写了一个传统的if-else构造:

if (a > b) {
    result = x;
} else {
    result = y;
}
这可以重写为以下语句:

result = a > b ? x : y;
基本上采取以下形式:

boolean statement ? true result : false result;
因此,如果布尔语句为真,则得到第一部分,如果为假,则得到第二部分

如果仍然没有意义,请尝试以下方法:

System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");

这是一个if/else语句,与

if(row % 2 == 1){
  System.out.print("<");
}else{
  System.out.print("\r>");
}
if(行%2==1){
系统输出打印(“”);
}
它们被称为三元运算符,因为它们是Java中唯一的运算符

if…else构造的区别在于,它们返回一些东西,而这些东西可以是任何东西:

  int k = a > b ? 7 : 8; 
  String s = (foobar.isEmpty ()) ? "empty" : foobar.toString (); 

它是一个三元运算符,用简单的英语说,它表示“如果行%2等于1,则返回

,尽管我已经发布了另一个相关问题的答案

a = x ? : y;
相当于:

a = x ? x : y;

如果x为false或null,则取y的值。

也许这是Android的完美例子, 例如:

void setWaitScreen(boolean set) {
    findViewById(R.id.screen_main).setVisibility(
            set ? View.GONE : View.VISIBLE);
    findViewById(R.id.screen_wait).setVisibility(
            set ? View.VISIBLE : View.GONE);
}
answer=4
由于条件为false,因此采用y值

问号(?)
.条件为真时要使用的值

冒号(:)

。如果条件为false,则使用的值仅供参考:三元运算符不是特定于java的。什么语言?不是java语言。这可以是,但不是java语言。我在java中工作,是的,这在java中不起作用。抱歉,但这在java中不起作用。你确定没有考虑PHP吗?Groovy有“Elvis运算符”(
?:
)这种行为类似于<代码> C<< /COD>空聚结算子(<代码>?<代码>)。Ternary算符是指具有三个参数的任何算子,因此这是三元算子而不是三元算子。主要语言(C语言,java,PHP)认为它是条件运算符,并称它为::运算符。它被称为条件运算符。@Sheepy谢谢,我更新了答案。在性能方面有什么不同吗?我个人认为经典版本更容易阅读-尤其是当
x
y
再次是函数调用时。@Cleb理论上没有区别,但编译器可以优化这两个语句d不同(对分支预测做出不同的假设)。大多数人不需要担心优化的级别,如果你这样做,你可能希望使用像
\u builtin\u expect
这样的属性。对我来说,根据你的布局,你的答案是唯一有意义的。因此,谢谢你,我已经用引用重新发布了你的答案。7之后可以调用函数吗或8?例如,如果a>7类型7,则执行其他功能。您是指“打印7”和“类型7”吗?为什么不试试呢?Java行话使用的是表达式方法,而不是函数-在其他上下文中,函数和过程的区别取决于三元表达式中所需的返回类型的存在。好的,您可以调用一个函数,该函数在打印后返回值。
a=1;
b=2;

x=3;
y=4;

answer = a > b ? x : y;