Java - 基本演算子
Java には、変数を操作するための豊富な演算子セットが用意されています。すべての Java オペレーターを次のグループに分けることができます −
- 算術演算子
- 関係演算子
- ビット演算子
- 論理演算子
- 代入演算子
- その他のオペレーター
算術演算子
算術演算子は、代数で使用されるのと同じ方法で数式で使用されます。次の表に、算術演算子を示します −
整数変数 A が 10 を保持し、変数 B が 20 を保持すると仮定すると、-
例を表示
演算子 | 説明 | 例 |
---|---|---|
+ (追加) | 演算子の両側に値を追加します。 | A + Bは30を与える |
- (減算) | 左側のオペランドから右側のオペランドを減算します。 | A - B は -10 を与える |
* (掛け算) | 演算子の両側で値を乗算します。 | A * Bは200を与える |
/ (分割) | 左側のオペランドを右側のオペランドで除算します。 | B / A は 2 になります |
% (モジュラス) | 左側のオペランドを右側のオペランドで除算し、剰余を返します。 | B % A は 0 を返します |
++ (増分) | オペランドの値を 1 増やします。 | B++ 21を与える |
-- (減分) | オペランドの値を 1 減らします。 | B-- 19 を与える |
関係演算子
Java 言語でサポートされている関係演算子には次のものがあります。
変数 A が 10 を保持し、変数 B が 20 を保持すると仮定すると、-
例を表示
演算子 | 説明 | 例 |
---|---|---|
==(等しい) | 2 つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が true になります。 | (A ==B) は正しくありません。 |
!=(等しくない) | 2 つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は true になります。 | (A !=B) は真です。 |
> (より大きい) | 左のオペランドの値が右のオペランドの値よりも大きいかどうかをチェックし、そうであれば、条件は true になります。 | (A> B) は正しくありません。 |
<(未満) | 左のオペランドの値が右のオペランドの値より小さいかどうかをチェックし、そうであれば条件は true になります。 | (A |
>=(以上) | 左のオペランドの値が右のオペランドの値以上かどうかをチェックし、そうであれば条件は true になります。 | (A>=B) は正しくありません。 |
<=(以下) | 左のオペランドの値が右のオペランドの値以下かどうかをチェックし、そうであれば条件は true になります。 | (A <=B) は真です。 |
ビット演算子
Java では、整数型 long、int、short、char、および byte に適用できるいくつかのビット演算子が定義されています。
ビット単位の演算子は、ビットに対して機能し、ビットごとの操作を実行します。 a =60 で b =13 であると仮定します。バイナリ形式では、次のようになります-
=0011 1100
b =0000 1101
-----------------
a&b =0000 1100
a|b =0011 1101
a^b =0011 0001
~a =1100 0011
次の表に、ビット単位の演算子を示します −
整数変数 A が 60 を保持し、変数 B が 13 を保持すると仮定すると、-
例を表示
演算子 | 説明 | 例 |
---|---|---|
&(ビットごとの and) | 2 項 AND 演算子は、両方のオペランドに存在する場合、ビットを結果にコピーします。 | (A &B) は 0000 1100 である 12 を返します |
| (ビット単位または) | バイナリ OR 演算子は、どちらかのオペランドに存在する場合、ビットをコピーします。 | (A | B) は 0011 1101 である 61 を返します |
^ (ビット単位の XOR) | バイナリ XOR 演算子は、両方ではなく一方のオペランドに設定されている場合、ビットをコピーします。 | (A ^ B) は 0011 0001 である 49 を返します |
~ (ビット単位の補完) | 2 進数の 1 の補数演算子は単項であり、ビットを「反転」する効果があります。 | (~A ) は、符号付き 2 進数のため、2 の補数形式で 1100 0011 である -61 を返します。 |
<<(左シフト) | 二項左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左に移動します。 | <<2 は 240 となり、1111 0000 になります |
>> (右シフト) | 二項右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右に移動します。 | A>> 2 は 1111 である 15 を返します |
>>> (ゼロフィル右シフト) | ゼロ埋め演算子を右にシフトします。左オペランドの値は、右オペランドで指定されたビット数だけ右に移動され、シフトされた値はゼロで埋められます。 | A>>>2 は 0000 1111 である 15 を返します |
論理演算子
次の表に論理演算子を示します −
ブール変数 A が true を保持し、変数 B が false を保持すると仮定すると、-
例を表示
演算子 | 説明 | 例 |
---|---|---|
&&(論理積) | 論理 AND 演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は true になります。 | (A &&B) は false |
|| (論理和) | 論理 OR 演算子と呼ばれます。 2 つのオペランドのいずれかがゼロ以外の場合、条件は真になります。 | (A || B) は真です |
! (論理否定) | 論理 NOT 演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件が true の場合、論理 NOT 演算子は false になります。 | !(A &&B) は真です |
代入演算子
以下は、Java 言語でサポートされている代入演算子です −
例を表示
演算子 | 説明 | 例 |
---|---|---|
= | 単純代入演算子。右側のオペランドの値を左側のオペランドに割り当てます。 | C =A + B は A + の値を割り当てます。 BからCへ |
+= | AND 代入演算子を追加します。右オペランドを左オペランドに追加し、結果を左オペランドに代入します。 | C +=A は C =C + と同等です。 A |
-= | 減算 AND 代入演算子。左オペランドから右オペランドを減算し、結果を左オペランドに代入します。 | C -=A は C =C – A と同等です |
*= | 乗算 AND 代入演算子。右オペランドと左オペランドを乗算し、結果を左オペランドに代入します。 | C *=A は C =C * と同等です。 A |
/= | 除算 AND 代入演算子。左のオペランドを右のオペランドで除算し、結果を左のオペランドに代入します。 | C /=A は C =C / A と同等 |
%= | モジュラス AND 代入演算子。 2 つのオペランドを使用してモジュラスを取得し、結果を左のオペランドに代入します。 | C %=A は C =C % A と同等です |
<<= | 左シフト AND 代入演算子。 | C <<=2 は C =C <<2 と同じです |
>>= | 右シフト AND 代入演算子。 | C>>=2 は C =C>> 2 と同じです |
&= | ビットごとの AND 代入演算子。 | C &=2 は C =C &2 と同じです |
^= | ビットごとの排他的 OR および代入演算子。 | C ^=2 は C =C ^ 2 と同じです |
|= | ビットごとの包含 OR および代入演算子。 | C |=2 は C =C | と同じです。 2 |
その他の演算子
Java 言語でサポートされている他の演算子はほとんどありません。
条件演算子 ( ? :)
条件演算子は、三項演算子とも呼ばれます .この演算子は 3 つのオペランドで構成され、ブール式の評価に使用されます。演算子の目的は、変数に割り当てる値を決定することです。演算子は −
のように書かれます。variable x = (expression) ? value if true : value if false
以下は例です-
例
ライブデモpublic class Test { public static void main(String args[]) { int a, b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } }
これにより、次の結果が生成されます-
出力
Value of b is : 30 Value of b is : 20
オペレーターのインスタンス
この演算子は、オブジェクト参照変数にのみ使用されます。オペレーターは、オブジェクトが特定のタイプ (クラスタイプまたはインターフェースタイプ) であるかどうかをチェックします。 instanceof 演算子は次のように記述されます −
( Object reference variable ) instanceof (class/interface type)
演算子の左側の変数によって参照されるオブジェクトが、右側のクラス/インターフェイス タイプの IS-A チェックに合格した場合、結果は true になります。以下は例です-
例
ライブデモpublic class Test { public static void main(String args[]) { String name = "James"; // following will return true since name is type of String boolean result = name instanceof String; System.out.println( result ); } }
これにより、次の結果が生成されます-
出力
true
比較されるオブジェクトが右側の型と互換性のある割り当てである場合、この演算子は true を返します。以下はもう1つの例です-
例
ライブデモclass Vehicle {} public class Car extends Vehicle { public static void main(String args[]) { Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result ); } }
これにより、次の結果が生成されます-
出力
true
Java 演算子の優先順位
演算子の優先順位によって、式内の用語のグループ化が決まります。これは、式の評価方法に影響します。特定の演算子は、他の演算子よりも優先順位が高くなります。たとえば、乗算演算子は加算演算子よりも優先されます −
たとえば、x =7 + 3* 2;ここで x には 20 ではなく 13 が割り当てられます。 + よりも優先順位が高いため、最初に 3 * を乗算します。 2 を追加し、7 に追加します。
ここでは、優先順位が最も高い演算子が表の上部に表示され、最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
カテゴリ | 演算子 | 連想性 |
---|---|---|
後置 | expression++ 式-- | 左から右 |
単項 | ++式 –-式 +式 –式 ~ ! | 右から左 |
乗法 | * / % | 左から右 |
添加剤 | + - | 左から右 |
シフト | <<>>>>> | 左から右 |
リレーショナル | <> <=>=インスタンス | 左から右 |
平等 | ==!= | 左から右 |
ビットごとの AND | & | 左から右 |
ビット単位の XOR | ^ | 左から右 |
ビットごとの OR | | | 左から右 |
論理積 | && | 左から右 |
論理和 | || | 左から右 |
条件付き | ?: | 右から左 |
任務 | =+=-=*=/=%=^=|=<<=>>=>>>= | 右から左 |
次は?
次の章では、Java プログラミングにおけるループ制御について説明します。この章では、さまざまな種類のループについて説明し、これらのループを Java プログラム開発でどのように使用できるか、およびそれらがどのような目的で使用されているかについて説明します。
Java