Java言語の基礎 part3

演算子の優先順位

-, ==, = の順で評価される。
intに直接 - の指定もあり。
booleanに==で評価した結果を代入するのもアリ。

||演算子(または)と&&演算子(かつ)

Integer obj = null;
if(/* FIXME */){
    System.out.println("OK");
}

FIXME

/* 1 */ obj != null || obj.intValue() == 10
/* 2 */ obj != null && obj.intValue() == 10
/* 3 */ obj == null || obj.intValue() == 10
/* 4 */ obj == null && obj.intValue() == 10

短絡的な評価
&&は、片方の計算を終えて false であればもう一方の計算は行わない。

は、片方の計算を終えて true であればもう一方の計算は行わない。


.intValue()を計算した場合、objはnullなのでNullPointerException
発生してしまうので、片方で抜けられるものを選ぶ。


よって、正解は、2 と 3 になる。

|演算子(OR)と&演算子

式は、booleanを返却するものを指定すること。
短絡的な評価はせずに、両方の式を見るので注意すること

メンバ変数の初期化

メンバ変数は、何も指定がない場合は、決められた値で初期化される。

boolean→false など。

if の中で代入した場合は、
代入後の値を用いて、演算される。

boolean b = true;
if( b = false){
    System.out.println("if is selected.");    
} else {
    System.out.println("else is selected.");

else is selected.
が出力される。