Java Silverの&&と||の纏め

Java Silverの&&と||の纏め

if分のand条件やor条件で、&&や||を使いますが、この問題の引っかけがありました。

public class Main {
public static void main(String[] args) {
boolean flag = false;
int i = 10;
if (flag && ++i < 10) { // 左辺の評価式がfalseの為、右辺は評価されない為インクリメントされない
System.out.println(i);
} else {
System.out.println(i); // 10と表示される
}
}
}

view raw
andand
hosted with ❤ by GitHub

上記の場合、if文の左辺がfalseだと右辺は評価されません。

これで、&&の箇所が||の場合は、if文の左辺がfalseとなり、右辺を評価しますので、インクリメントされて11と表示されます。

public class Main {
public static void main(String[] args) {
boolean flag = false;
int i = 10;
if (flag || ++i < 10) { // 左辺の評価式がfalseの為、右辺は評価されない為インクリメントされない
System.out.println(i);
} else {
System.out.println(i); // 10と表示される
}
}
}

view raw
oror
hosted with ❤ by GitHub

&と|について

&&に対して&、||に対して|があります。

&と|の違いは、左辺がtrue,falseに関わらず右辺も評価するという点です。

以下は&の例です。

public class Main {
public static void main(String[] args) {
boolean flag = false;
int i = 10;
if (flag & ++i < 10) { // 左辺の評価式がfalseだが、右辺が評価されてインクリメントされる
System.out.println(i);
} else {
System.out.println(i); // 11と表示される
}
}
}

view raw
and
hosted with ❤ by GitHub

以下は|の例です。

public class Main {
public static void main(String[] args) {
boolean flag = true;
int i = 10;
if (flag | ++i < 10) { // 左辺の評価式がtrueだが、右辺も評価されてインクリメントされる
System.out.println(i);
} else {
System.out.println(i); // 11と表示される
}
}
}

view raw
or
hosted with ❤ by GitHub

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA