什么样的Java语法是"== null?false:true;"

tzi*_*ppy 10 java

我正在查看代码并想知道这意味着什么:

Boolean foo = request.getParameter("foo") == null? false:true;
Run Code Online (Sandbox Code Playgroud)

它必须是将返回的String从getParameter()转换为布尔值的东西.

但我从来没有见过这种带有问号和冒号的Java(除了在foreach循环中).任何帮助升值!

pax*_*blo 26

这是三元运营商.片段:

Boolean foo = request.getParameter("foo") == null? false:true;
Run Code Online (Sandbox Code Playgroud)

相当于:

Boolean foo;
if (request.getParameter("foo") == null)
    foo = false;
else
    foo = true;
Run Code Online (Sandbox Code Playgroud)

或(优化):

Boolean foo = request.getParameter("foo") != null;
Run Code Online (Sandbox Code Playgroud)

运营商的基本形式如下:

(condition) ? (value if condition true) : (value if condition false)
Run Code Online (Sandbox Code Playgroud)


Nul*_*ion 18

那是三元运算符:

(condition) ? if-true : if-false
Run Code Online (Sandbox Code Playgroud)

整件事情可以写成:

Boolean foo = request.getParameter("foo") != null;
Run Code Online (Sandbox Code Playgroud)

哪个IMO更清洁代码.

  • +1指出在这种情况下它被不必要地使用. (5认同)