2015-04-23 32 views
-5
private boolean safeCameraOpen(int id) { 
boolean qOpened = false; 

try { 
    releaseCameraAndPreview(); 
    mCamera = Camera.open(id); 
    qOpened = (mCamera != null); 
} catch (Exception e) { 
    Log.e(getString(R.string.app_name), "failed to open Camera"); 
    e.printStackTrace(); 
} 

return qOpened;  
} 

在這裏... qOpened等於false。不瞭解這個java方法,需要說明

但後來這裏,QOPENED等於(mCamera!= NULL)

是它等於虛假或者是等於(mCamera!= NULL)?

爲什麼我們需要聲明「boolean qOpened = false;」?我們不能只保留它「布爾qOpened;」?

它會有什麼不同?

+2

根據你的問題,現在開始使用Android還言之過早。閱讀更多關於語言基礎知識。 – mihail

回答

0
qOpened = false; 

並不意味着qOpened等於false,這意味着設置qOpenedfalse

這是一個賦值語句而不是一個等式。

所以,在你的代碼粘貼好,它的初始設置爲false然後,假設調用Camera.open()不會引起異常(如果是這樣,try塊的其餘部分將不會被執行), 它返回一個有效值,它將被設置爲true

1

mCamera != null本身返回一個布爾結果。它是一個布爾比較和代碼行本身進行更換:

if (mCamera != null) 
    qOpened = true; 
else 
    qOpened = false; 

關於你的問題:

爲什麼我們需要聲明「布爾QOPENED =假;」?我們不能 只是保持「布爾qOpened;」???

如果將沒有try/catch條款也可能留下未初始化像

boolean qOpened; 

但由於try/catch也許可以爐火前初始化qOpened(像releaseCameraAndPreview();)Java將不知道如何在返回在

return qOpened; 
1

mCamera != null方法的端部是一個布爾表達式,計算結果爲truefalse。然後將結果分配到qOpened。表達式附近的括號()嚴格不需要,但是爲了清晰起見,

boolean qOpened = false是必需的,以防止有關未初始化變量的編譯時錯誤。