2010-08-04 27 views
10

我期待通過代碼,不知道這意味着什麼:什麼樣的Java語法是「== null?false:true;」

Boolean foo = request.getParameter("foo") == null? false:true; 

這得是什麼,它把來自的getParameter返回的字符串()爲布爾。

但我從來沒有見過這種帶有questionmark和冒號的Java(除了在foreach循環中)。 任何hel感激!

+1

有時我討厭這樣的語句沒有適當的支架。應該更像這樣可讀:'Boolean foo =(request.getParameter(「foo」)== null)?假:真;' – mauris 2010-08-04 07:56:45

+2

請注意,如果請求參數是foo = false,那麼foo變量將被設置爲「true」。 – 2010-08-04 07:56:52

回答

25

速記這是三元運算符。代碼段:

Boolean foo = request.getParameter("foo") == null? false:true; 

相當於:

Boolean foo; 
if (request.getParameter("foo") == null) 
    foo = false; 
else 
    foo = true; 

或(優化的):

Boolean foo = request.getParameter("foo") != null; 

操作者的基本形式是沿着線:

(condition) ? (value if condition true) : (value if condition false) 
16

這是三元運算符:

(condition) ? if-true : if-false 

整個事情可能已經被寫爲:

Boolean foo = request.getParameter("foo") != null; 

哪個IMO是乾淨的代碼。

+3

+1指出在這種情況下,它被不必要地使用。 – Jesper 2010-08-04 07:56:02

+0

爲什麼每個人都在編輯他們的答案? – NullUserException 2010-08-04 07:59:32

+0

+1用於指出這一點。通常不是最好使用三元運算符來返回布爾值。 – kiamlaluno 2010-08-04 08:06:46

0

這是

Boolean foo; 
if(request.getParameter("foo")==null) 
{ 
foo = false; 
} 
else { foo = true; } 
+0

並以最明智的方式寫出來; -) – EJP 2010-08-04 09:02:42

0

整個事情可能只是

Boolean foo = (request.getParameter("foo") != null);