2015-04-23 38 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是必需的,以防止有关未初始化变量的编译时错误。