Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不理解这个java方法,需要解释吗_Java_Android - Fatal编程技术网

不理解这个java方法,需要解释吗

不理解这个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();

在这里。。。qOpened等于false

但稍后这里,qOpened等于(mCamera!=null)

它是等于false还是等于(mCamera!=null)

为什么我们需要声明“boolean qOpened=false;”?我们不能把它保持在“布尔qOpened;”吗

这会有什么不同

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
块的其余部分),并且它返回一个有效值,它将设置为
true

mCamera!=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;