さて、このコードをテストしたところ、例外は発生していないことがわかりました。
public static void main(String[] args) {
int[] list = {1,2};
if (list.length>2 && list[3] == 2){
System.out.println(list[1]);
}
}
ここでの声明は
if (list.length>2 && list[3] == 2)
最初の条件が偽の場合、2 番目の条件をチェックする必要がないことを意味しますか?
またはそれは
if (list.length>2){
if (list[3] == 2){
...
}
}
?
そして、それが C や Python または他の言語で書かれていたらどうなるでしょうか?
ありがとう
ベストアンサー1
言語(Java や Python など)では、論理式の最初の引数を評価しAND
、最初の引数が の場合は文の評価を終了するのが一般的ですfalse
。これは次の理由によります。
から論理演算子の評価順序、
Java が式 d = b && c; を評価するとき、まず b が真かどうかをチェックします。ここで b は偽なので、c が真かどうかに関係なく b && c は偽でなければなりません。そのため、Java は c の値をチェックしません。
これは短絡評価、また、Javaドキュメント。
list.count > 0 && list[0] == "Something"
リスト要素が存在するかどうかを確認するのはよくあることです。
また、言及する価値があるのif (list.length>2 && list[3] == 2)
はない2番目のケースと同じ
if (list.length>2){
if (list[3] == 2){
...
}
}
その後にがある場合else
。 は、それが添付されているステートメントelse
にのみ適用されます。if
この落とし穴を説明するには:
if (x.kind.equals("Human")) {
if (x.name.equals("Jordan")) {
System.out.println("Hello Jordan!");
}
} else {
System.out.println("You are not a human!");
}
期待通りに動作しますが、
if (x.kind.equals("Human") && x.name.equals("Jordan")) {
System.out.println("Hello Jordan!");
} else {
System.out.println("You are not a human!");
}
人間でない人には、Jordan
人間ではないと告げるでしょう。