Java chapter 8 条件を書くための演算子⑤

今日は論理演算子の短絡評価からはぃめていきます。

6.論理演算子の短絡評価

長い関係式を途中まで評価したとき、それ以降評価しなくてもtrueかfalseがわかることがあります。

その時に式の評価をやめてしまうのが短絡評価。

種類によっては短絡評価をするものとしないものがあります。

①&&演算子の短絡評価

次のように、xが0でyも0の場合、 x≠0 ならyが何であろうと式の値はfalse

です。

int x=0, y=20;

x==0 && y==0 ・・・・・・・・・・xが0でなければyの値にかかわらずfalse

式は左から評価されます。

x≠0と分かった時点で式がfalseに確定し、yの値を調べる必要がなくなります。

&&演算子はそのような検査の省略を行います。

これを

短絡評価

といいます。

次の例題で見ていきます。

Content image

 

ちょっとプログラムが見にくいので

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の値もきちんとチェックします。

実行結果は次のようになります。

Content image

で、普通は&は使わず&&(短絡評価)を使います。

②||演算子の短絡評価

またはのばあいも同じですが、xが3でyも3の場合、 x==3 ならyが何であろうと式の値はtrueです。

Content image

|の場合はこのようになります。

Content image

普通は|は使わず||を使います。

ここまでご覧いただきありがとうございました。

BY MT

参考書は__________________________________

新わかりやすい Java

川場 隆  Kawaba Takashi

秀和システム