条件式 conditional expression
1. 関連する演算子一覧
演算子 一覧
論理否定演算 |
! | |
| |
|
比較演算 |
< | <= |
> | >= |
instanceof |
等値演算 |
== | != |
| |
|
and演算 |
&& | |
| |
|
or演算 |
|| | |
| |
|
条件演算 |
? : | |
| |
|
|
記号のキーボード上の配置
拡大図
|
2. 論理否定演算 !
単項演算子です。
!の直後にある式の値は、
true か
false で、
! をつけた値は、それぞれ、
false と
true になります。
この演算子の
優先順位
はこの表にあるどの演算子よりも高いことに
注目しましょう。たとえば、
! 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.isNaN や
Double.isNaN を用いましょう。
6. 真偽値等値 == !=
演算子の両側とも、boolean 型であれば、 両方とも true または 両方とも false
の場合、結果が true となり、それ以外の場合 false となります。
7. 参照等値 == !=
演算子の両側が、参照型や null 型の場合、
同一のオブジェクトか否かを判定します。
== の両側とも null の場合や、
両側とも同一のオブジェクトや配列を参照している場合、
結果は true に、そうでない場合 false となります。
!= の両側とも null の場合や、
両側とも同一のオブジェクトや配列を参照している場合、
結果は false に、そうでない場合 true となります。
同一のオブジェクトでなくても、そのオブジェクトの値が等しいことがあります。
値が等しいかどうかの判定のために
equals や compareTo メソッドがあります。
クラスを定義する際、そのクラスにふさわしい比較操作を定義できるように
なっています。
文字列の比較でも、文字列として等しいかどうかは通常 == ではなく
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