Java 什么是问号&引用;和冒号“:&引用;接线员用来做什么?
关于使用问号“?”和冒号的两个问题:“打印函数括号内的运算符:它们的作用是什么?”?还有,是否有人知道它们的标准术语,或者我在哪里可以找到更多关于它们使用的信息?我读到它们类似于“if”“else”语句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 ? "<" : "\
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;