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と表示される } } }
上記の場合、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と表示される } } }
&と|について
&&に対して&、||に対して|があります。
&と|の違いは、左辺が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と表示される } } }
以下は|の例です。
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と表示される } } }
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント