评估&&布尔运算符

And*_*dan 5 java if-statement

如果我有以下if声明

if ( (row != -1) && (array[row][col] != 10) ) {
    ....
}
Run Code Online (Sandbox Code Playgroud)

哪里row是一个int值,array是一个int[][]对象.

我的问题是,如果row = -1会抛出异常,因为数组不会有-1字段,那么out of bounds异常?或者它会停在if的第一部分(行!= - 1),因为这是假的,它会忽略其余部分吗?或者为了确保它不会抛出异常,我应该将上面的if语句分成两个?

(请不要告诉我为自己检查这个:)我在这里问'因为我想问一个后续问题......)

mik*_*era 3

它会在抛出异常之前安全停止

&&一个短路布尔运算符,这意味着一旦其中一部分返回 false,它将停止执行表达式(因为这意味着整个表达式必须为 false)。

请注意,它还保证按顺序计算表达式的各部分,因此在此类情况下使用是安全的。