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つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が真になります。 | (A == B)は真ではありません。 |
!=(等しくない) | 2つのオペランドの値が等しいかどうかをチェックし、値が等しくない場合は条件が真になります。 | (A!= B)は真です。 |
>(より大きい) | 左のオペランドの値が右のオペランドの値より大きいかどうかを確認します。大きい場合は、条件が真になります。 | (A> B)は正しくありません。 |
<(未満) | 左のオペランドの値が右のオペランドの値よりも小さいかどうかを確認します。小さい場合は、条件が真になります。 | (A <B)は真です。 |
> =(以上) | 左のオペランドの値が右のオペランドの値以上であるかどうかをチェックします。はいの場合、条件は真になります。 | (A> = B)は正しくありません。 |
<=(以下) | 左のオペランドの値が右のオペランドの値以下であるかどうかをチェックします。はいの場合、条件は真になります。 | (A <= B)は真です。 |
ビット演算子
Javaは、整数型、long、int、short、char、およびbyteに適用できるいくつかのビット演算子を定義しています。
ビット単位の演算子はビットを処理し、ビットごとの演算を実行します。a = 60およびb = 13であると仮定します。現在、バイナリ形式では次のようになります-
a = 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演算子は、両方のオペランドに存在する場合、結果にビットをコピーします。 | (A&B)は00001100である12を与えます |
| (ビット単位または) | バイナリOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 | (A | B)は611 1101である61を与えます |
^(ビット単位のXOR) | バイナリXOR演算子は、ビットが両方ではなく一方のオペランドに設定されている場合、そのビットをコピーします。 | (A ^ B)は、00110001である49を与えます。 |
〜(ビット単位の褒め言葉) | Binary Ones Complement Operatorは単項であり、ビットを「反転」させる効果があります。 | (〜A)は、符号付き2進数のため、2の補数形式で11000011である-61を返します。 |
<<(左シフト) | バイナリ左シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ左に移動します。 | << 2は、11110000である240を与えます |
>>(右シフト) | バイナリ右シフト演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。 | >> 2は1111である15を与えます |
>>>(ゼロフィル右シフト) | 右シフトゼロフィル演算子。左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動し、シフトされた値はゼロで埋められます。 | >>> 2は、00001111である15を与えます |
論理演算子
次の表に、論理演算子-を示します。
ブール変数Aがtrueを保持し、変数Bがfalseを保持すると仮定すると、−
例を表示
オペレーター | 説明 | 例 |
---|---|---|
&&(論理積) | 論理AND演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は真になります。 | (A && B)は誤りです |
|| (論理または) | 論理OR演算子と呼ばれます。2つのオペランドのいずれかがゼロ以外の場合、条件は真になります。 | (A || B)は真です |
!(論理的ではない) | 論理NOT演算子と呼ばれます。オペランドの論理状態を逆にするために使用します。条件がtrueの場合、LogicalNOT演算子はfalseになります。 | !(A && B)はtrueです |
代入演算子
以下は、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と同じです |
^ = | ビット単位の排他的論理和と代入演算子。 | C ^ = 2はC = C ^ 2と同じです |
| = | ビット単位の包括的ORおよび代入演算子。 | C | = 2はC = C |と同じです 2 |
その他の演算子
Java言語でサポートされている他の演算子はほとんどありません。
条件付き演算子(?:)
条件演算子は、 ternary operator。この演算子は3つのオペランドで構成され、ブール式を評価するために使用されます。演算子の目的は、変数に割り当てる値を決定することです。演算子は次のように記述されます-
variable x = (expression) ? value if true : value if false
以下は例です-
Example
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 );
}
}
これにより、次の結果が生成されます-
Output
Value of b is : 30
Value of b is : 20
instanceof演算子
この演算子は、オブジェクト参照変数にのみ使用されます。オペレーターは、オブジェクトが特定のタイプ(クラスタイプまたはインターフェイスタイプ)であるかどうかを確認します。instanceof演算子は次のように記述されます-
( Object reference variable ) instanceof (class/interface type)
演算子の左側の変数によって参照されるオブジェクトが、右側のクラス/インターフェイスタイプのIS-Aチェックに合格した場合、結果はtrueになります。以下は例です-
Example
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 );
}
}
これにより、次の結果が生成されます-
Output
true
比較されるオブジェクトが右側のタイプと互換性のある割り当てである場合、この演算子は引き続きtrueを返します。以下はもう1つの例です-
Example
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 );
}
}
これにより、次の結果が生成されます-
Output
true
Java演算子の優先順位
演算子の優先順位は、式内の用語のグループ化を決定します。これは、式の評価方法に影響します。特定の演算子は他の演算子よりも優先されます。たとえば、乗算演算子は加算演算子よりも優先されます-
たとえば、x = 7 + 3 * 2; ここで、演算子*は+よりも優先されるため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2が乗算され、次に7に加算されます。
ここでは、優先順位が最も高い演算子がテーブルの上部に表示され、優先順位が最も低い演算子が下部に表示されます。式内では、優先順位の高い演算子が最初に評価されます。
カテゴリー | オペレーター | 結合性 |
---|---|---|
Postfix | 式++式- | 左から右へ |
単項 | ++式-式+式–式〜! | 右から左へ |
乗法 | * /% | 左から右へ |
添加剤 | +- | 左から右へ |
シフト | << >> >>> | 左から右へ |
関連した | <> <=> = instanceof | 左から右へ |
平等 | ==!= | 左から右へ |
ビットごとのAND | & | 左から右へ |
ビット単位のXOR | ^ | 左から右へ |
ビットごとのOR | | | 左から右へ |
論理積 | && | 左から右へ |
論理OR | || | 左から右へ |
条件付き | ?: | 右から左へ |
割り当て | = + =-= * = / =%= ^ = | = << = >> = >>> = | 右から左へ |
次は何ですか?
次の章では、Javaプログラミングのループ制御について説明します。この章では、さまざまなタイプのループと、これらのループをJavaプログラム開発で使用する方法、およびそれらが使用されている目的について説明します。