昨日の続きのまとめ編を今日も公開していきます。
5.論理演算子
論理演算子は 関係式と組み合わせて複雑な条件を作ることが可能です。
演算子は次のようなものがあります。
排他的論理和は、ほとんど使うことはありません。
次に基本的な使用例を見ていきます。
S>0 && S<100 ・・・・・・・ Sは0より大きく100より小さい
図で示すとこんな感じです。
ピンクのところが範囲ですね。
S<=0 || S>=100 ・・・・・・・Sは0以下、または、100以上
今度はまたはの条件の組み合わせです。
0以下の範囲と100以上が範囲となります。
!(S>0 && S<100)・・・・・[Sは0より大きく、かつ、20より小さい]ではない
S>0 && S<10の否定です。具体的に言うとS<=0 || S>=100の範囲です。
(S==0)^(T==0)・・・・・・・SかTのどちらか一方だけが0である
排他的論理和は、一方がtrueで、もう一方がfalseの時だけtrueになるものです。
どちらともtrueやfalseだと式の値はfalseになります。
今回最後に複雑な論理式を見ていきます。
☆複雑な論理式
s>0 && t<10 && u==5
sは0より大、かつtが10より小さくuは5というような複雑なものも作ることができますね。
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の値を調べる必要がなくなります。
&&演算子はそのような検査の省略を行います。
これを
短絡評価
といいます。
次の例題で見ていきます。
ちょっとプログラムが見にくいので
package sample;
public class Input {
public static void main(String[] args){
int x=3, y=3;
System.out.println(x++ == 0 &amp;&amp; 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 &amp; y++ == 0);
System.out.println("x="+x+"/y="+y);
}
}
&&演算子は効率の良い演算子ですが、&演算子は短絡評価を行わずyの値もきちんとチェックします。
実行結果は次のようになります。
で、普通は&は使わず&&(短絡評価)を使います。
②||演算子の短絡評価
またはのばあいも同じですが、xが3でyも3の場合、 x==3 ならyが何であろうと式の値はtrueです。
|の場合はこのようになります。
普通は|は使わず||を使います。
7.条件演算子
条件演算子は条件 true か false で違う値になる式を作る。
例えば
これを条件演算子では次のように書きます。
条件 論理式 ? と書いてその横に trueの値、falseの値を(:)で区切って書きます。最後に(;)をわすれないように。
これは3つの項があるので、3項演算子です。
8.演算子一覧表
最後に演算子一覧が掲載されているサイトを紹介
ここまでご覧いただきありがとうございました。
BY マんタ
参考書は__________________________________
川場 隆 Kawaba Takashi
秀和システム