今日は論理演算子の短絡評価からはぃめていきます。
長い関係式を途中まで評価したとき、それ以降評価しなくてもtrueかfalseがわかることがあります。
その時に式の評価をやめてしまうのが短絡評価。
種類によっては短絡評価をするものとしないものがあります。
次のように、xが0でyも0の場合、 x≠0 ならyが何であろうと式の値はfalse
です。
式は左から評価されます。
x≠0と分かった時点で式がfalseに確定し、yの値を調べる必要がなくなります。
&&演算子はそのような検査の省略を行います。
これを
短絡評価
といいます。
次の例題で見ていきます。
ちょっとプログラムが見にくいので
package sample;
public class Input {
public static void main(String[] args){
int x=3, y=3;
System.out.println(x++ == 0 && y++ == 0);
System.out.println("x="+x+"/y="+y);
}
}
初期値は共に3。
5行目で++が付いていて後置なので実行後値が増えます。
増えるのはこの場合xの値だけですね。
実行結果を見るとxは1増えて4となりyは3のまま
x=4/y=3となっているのでyは評価されませんでした。
yの値もチェックするように書き換えてみます。
package sample;
public class Input {
public static void main(String[] args){
int x=3, y=3;
System.out.println(x++ == 0 & y++ == 0);
System.out.println("x="+x+"/y="+y);
}
}
&&演算子は効率の良い演算子ですが、&演算子は短絡評価を行わずyの値もきちんとチェックします。
実行結果は次のようになります。
で、普通は&は使わず&&(短絡評価)を使います。
またはのばあいも同じですが、xが3でyも3の場合、 x==3 ならyが何であろうと式の値はtrueです。
|の場合はこのようになります。
普通は|は使わず||を使います。
ここまでご覧いただきありがとうございました。
BY MT
参考書は__________________________________
新わかりやすい Java
川場 隆 Kawaba Takashi