不理解这个java方法,需要解释吗
在这里。。。qOpened等于false 但稍后这里,qOpened等于(mCamera!=null) 它是等于false还是等于(mCamera!=null) 为什么我们需要声明“boolean qOpened=false;”?我们不能把它保持在“布尔qOpened;”吗 这会有什么不同不理解这个java方法,需要解释吗,java,android,Java,Android,在这里。。。qOpened等于false 但稍后这里,qOpened等于(mCamera!=null) 它是等于false还是等于(mCamera!=null) 为什么我们需要声明“boolean qOpened=false;”?我们不能把它保持在“布尔qOpened;”吗 这会有什么不同 private boolean safeCameraOpen(int id) { boolean qOpened = false; try { releaseCameraAndPreview();
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
,而是意味着将qOpened
设置为false
这是一个赋值语句,而不是一个等式
因此,在您粘贴的代码中,它最初设置为
false
,然后假设对Camera.open()
的调用不会导致异常(如果会,则不会执行try
块的其余部分),并且它返回一个有效值,它将设置为truemCamera!=null本身返回一个布尔结果。它是一个布尔比较,代码行本身是以下内容的替代:
qOpened = false;
关于你的问题:
为什么我们需要声明“boolean qOpened=false;”??我们不能吗
只需将其设置为“布尔qOpened;”
如果没有try/catch
子句,则可以像
if (mCamera != null)
qOpened = true;
else
qOpened = false;
但是由于try/catch
可能会在初始化qOpened
之前触发(如releaseCameraAndPreview();
),Java不知道在
boolean qOpened;
mCamera!=null
是一个布尔表达式,其计算结果为true
或false
。然后将结果分配给qOpened
。表达式周围的括号()
严格来说是不需要的,但为了清晰起见
boolean qOpened=false
是防止未初始化变量出现编译时错误所必需的。根据您的问题,现在开始使用Android还为时过早。阅读更多关于语言基础的知识。
return qOpened;