条件式 conditional expression

条件式 conditional expression は 結果が true または false になる式 および 条件演算子 ? : で作られる式をいいます。

  1. 関連する演算子一覧
  2. 論理否定演算 !
  3. 数値比較 < <= > >=
  4. instanceof
  5. 数値等値 == !=
  6. 真偽値等値 == !=
  7. 参照等値 == !=
  8. ビット論理演算 & ^ |
  9. and演算 &&
  10. or演算 ||
  11. 条件演算 ?:

1. 関連する演算子一覧

演算子 一覧
論理否定演算       
比較演算 <<= >>= instanceof
等値演算 ==!=     
and演算 &&      
or演算 ||      
条件演算 ? :      

記号のキーボード上の配置

keyboard-cond.gif

拡大図

2. 論理否定演算 !

単項演算子です。 !の直後にある式の値は、truefalse で、 ! をつけた値は、それぞれ、 falsetrue になります。 この演算子の 優先順位 はこの表にあるどの演算子よりも高いことに 注目しましょう。たとえば、 ! a < b と書くと (! a) < b とみなされ、コンパイルエラーとなります。 < を先に比較して、 その否定を求めたければ ! (a < b) と書かなければいけません。

3. 数値比較 < <= > >=

基本データ型の数値を比較します。 2数を大小を(数学的な意味で)比較し true または false とします。2数づつしか比較できないので、たとえば、
a < b < c
という書き方はできず、かわりに
a < b && b < c
と書かなければいけません。一方がdoubleであれば、 double で比較されます。そうでない場合で 一方がfloatであれば、 float で比較されます。 一方が NaN であれば、 結果は false です。

4. instanceof

5. 数値等値 == !=

演算子の両側とも基本データ型の数値の場合、数値として等しいか、等しくないかが 判定されます。 2数づつしか比較できないので、たとえば、a b c が全て等しいか? という比較は
a == b == c
という書き方はできず、かわりに
a == b && b == c
と書ければなりません。 いずれか一方が NaN である場合、 == の結果は false!= の結果は true となります。 値が NaN であるかどうかは、 メソッド Float.isNaNDouble.isNaN を用いましょう。

6. 真偽値等値 == !=

演算子の両側とも、boolean 型であれば、 両方とも true または 両方とも false の場合、結果が true となり、それ以外の場合 false となります。

7. 参照等値 == !=

演算子の両側が、参照型や null 型の場合、 同一のオブジェクトか否かを判定します。 == の両側とも null の場合や、 両側とも同一のオブジェクトや配列を参照している場合、 結果は true に、そうでない場合 false となります。

!= の両側とも null の場合や、 両側とも同一のオブジェクトや配列を参照している場合、 結果は false に、そうでない場合 true となります。

同一のオブジェクトでなくても、そのオブジェクトの値が等しいことがあります。 値が等しいかどうかの判定のために equalscompareTo メソッドがあります。 クラスを定義する際、そのクラスにふさわしい比較操作を定義できるように なっています。

文字列の比較でも、文字列として等しいかどうかは通常 == ではなく equals メソッドを用います。


       String a = "abc";
       String b = "def";
       if( (a + b).equals("abcdef") ) ...
     

8. ビット論理演算 & ^ |

9. and演算  &&

他の2項演算と異なる点があります。まず左側の演算対象を評価し、 false であれば、右側の評価をせずに 値を false とします。 左側が ture であれば、右側の値を答にします。 両側の値は、boolean 型 でなければいけません。

10. or演算 ||

まず左側の演算対象を評価し、 true であれば、右側を評価せず、 答を true とします。 左側が false の時には、右側を評価し、その値を答にします。 両側の値は、boolean 型 でなければいけません。

11. 条件演算 ?:


Top Page
更新日:2003-05-19