Javaの演算子2024 年の最新の入門チュートリアル。このコースでは 算術演算子,関係演算子,ビット演算子,論理演算子,代入演算子,条件演算子(?:),instanceof演算子,Javaの演算子の優先順位, について学習できます。
コンピュータの最も基本的な使用の一つは、コンピュータ言語として、Javaは変数を操作するオペレータの豊富なセットを提供し、数学演算を実行することです。 私たちは、次のグループにオペレータを置くことができます:
数式で使用される算術演算子、それらの役割と同じで数学の役割。 次の表は、すべての算術演算子を示しています。
表の例では、整数変数に10の値が、変数B 20の値を前提としています。
演算子 | 説明 | 例 |
---|---|---|
+ | 両側のオペレータの付加価値 - 追加 | + Bは30に等しいです。 |
- | 減算 - マイナス右のオペランド左オペランド | - Bは-10 |
* | 乗算 - 乗算演算子の両辺 | * Bは200に等しいです。 |
/ | 事業部 - 右オペランドで割った左オペランド | B / Aが2に等しいです。 |
% | モジュロ - 左オペランドと右オペランドの残りの部分に加えて、 | Bの%Aが0に等しいです |
+ + | インクリメント - オペランド1の値を大きく | B + +は21に等しいです。 |
- | デクリメント - オペランド1の値を小さく | B - - 19に等しいです |
次の簡単なプログラム例は、算術演算子を示しています。 コピーし、次のJavaプログラムを貼り付け、このプログラムをコンパイルして実行し、Test.javaファイルとして保存します。
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b) ); System.out.println("a - b = " + (a - b) ); System.out.println("a * b = " + (a * b) ); System.out.println("b / a = " + (b / a) ); System.out.println("b % a = " + (b % a) ); System.out.println("c % a = " + (c % a) ); System.out.println("a++ = " + (a++) ); System.out.println("a-- = " + (a--) ); // 查看 d++ 与 ++d 的不同 System.out.println("d++ = " + (d++) ); System.out.println("++d = " + (++d) ); } }
次のような結果をコンパイルした上記の例は次のとおりです。
a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 a-- = 11 d++ = 25 ++d = 27
次の表は、サポートされているJava関係演算子を示しています
10、20の変数Bテーブルインスタンスの整数変数の値です。
演算子 | 説明 | 例 |
---|---|---|
== | 条件が真である場合、2つのオペランドの値が等しい、等しいかどうか確認してください。 | (== B)は(真ではない)falseです。 |
!= | 値は、条件が真である等しくない場合は2つのオペランドの値は、等しいかどうか確認してください。 | (!= B)が真です。 |
> | 左オペランドの値をチェックし、それは条件が真である、その後であれば、右オペランドの値よりも大きいです。 | (A> B)は真実ではありません。 |
< | 左オペランドの値をチェックし、それは条件が真である、その後であれば、右オペランドの値よりも小さいです。 | (A <B)が真です。 |
> = | 左オペランドの値をチェックし、それは条件が真である、その後であれば、より大きいまたは右のオペランドの値に等しいです。 | (A> = B)が偽です。 |
<= | それは条件が真である、その後の場合は、左のオペランドの値は、右のオペランドの値以下であることを確認してください。 | (A <= B)が真です。 |
次の簡単なプログラム例は、関係演算子を示しています。 コピーし、次のJavaプログラムを貼り付け、このプログラムをコンパイルして実行し、Test.javaファイルとして保存します。
public class Test { public static void main(String args[]) { int a = 10; int b = 20; System.out.println("a == b = " + (a == b) ); System.out.println("a != b = " + (a != b) ); System.out.println("a > b = " + (a > b) ); System.out.println("a < b = " + (a < b) ); System.out.println("b >= a = " + (b >= a) ); System.out.println("b <= a = " + (b <= a) ); } }
次のような結果をコンパイルした上記の例は次のとおりです。
a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
Javaは、ビット演算子を定義して、タイプ(int型)、長整数(ロング)、短整数(ショート)、文字(char型)、バイト(バイト)および他のタイプを整数に適用されます。
全ての位置でのビット処理演算子、およびビット演算。 = 60、B = 13とし、以下のように彼らのバイナリフォーマットは次のようになります。
A = 0011 1100 B = 0000 1101 ----------------- A&b = 0000 1100 A | B = 0011 1101 A ^ B = 0011 0001 ~A= 1100 0011
次の表は、変数Bが60と13の値である整数変数を想定し、基本的な操作ビット単位の演算子を示します
演算子 | 説明 | 例 |
---|---|---|
& | ビット単位のAND演算子、ビットが1である場合、両方のオペランドのビットがゼロ以外の結果である場合にのみ。 | (A&B)、12を与えるために、すなわち0000 1100 |
| | 限り、このビットが1に設定されているときに2つのオペランドがゼロ以外の結果を持っているとして、ビット単位のOR演算子、ビット。 | (A | B)、すなわち、00111101を61を与えるために |
^ | ビットごとのXOR演算子、2つのオペランドのビットは、ビットが1に設定されているのと同じ結果ではありません。 | 49を得た(^ B A)、すなわち00110001 |
〜 | 各ビットのオペランドを反転ビット単位の補数演算子。 | (〜A)-61入手した、すなわち11000011 |
<< | ビット単位のシフト演算子を残しました。 桁数を指定されたシフトを左から右オペランドビットによる左オペランド。 | 1111万すなわち240の<< 2、 |
>> | ビット単位の右シフト演算子。 左のオペランドが右オペランドの右側にあるビットでビット数を指定します。 | A >>取得15すなわち1111年2 |
>>> | ビット単位の右ゼロ演算子。 右に左オペランドのプレスの値右オペランド指定したビット数は、結果の欠員がゼロで満たされている移動します。 | >>> 2 15すなわち0000 1111を取得 |
次の簡単なプログラム例は、ビット演算子を示しています。 コピーし、次のJavaプログラムを貼り付け、このプログラムをコンパイルして実行し、Test.javaファイルとして保存します。
public class Test { public static void main(String args[]) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = " + c ); c = a >> 2; /* 15 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 15 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }
次のような結果をコンパイルした上記の例は次のとおりです。
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 15 a >>> 15
次の表は、基本的な操作論理演算子、ブール変数仮説が真である、変数Bが偽で示しています
演算子 | 説明 | 例 |
---|---|---|
&& | 論理AND演算子と呼ばれます。 した場合、両方のオペランドがtrueの場合にのみ、条件が真となります。 | (&& B)は偽です。 |
| | | 論理またはオペレーターと呼ばれます。 任意の2つのオペランドのいずれかに該当する場合は、条件が真です。 | (A | | B)が真です。 |
! | NOT論理演算子と呼ばれます。 これは、オペランドの論理状態を反転させます。 条件が真の場合、NOT論理演算子はfalseになります。 | ! (&& B)は真です。 |
次の簡単なプログラム例は、論理演算子を示しています。 コピーし、次のJavaプログラムを貼り付け、このプログラムをコンパイルして実行し、Test.javaファイルとして保存します。
public class Test { public static void main(String args[]) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) = " + !(a && b)); } }
次のような結果をコンパイルした上記の例は次のとおりです。
a && b = false a || b = true !(a && b) = true
ここでは、代入演算子をサポートするために、Java言語は以下のとおりです。
演算子 | 説明 | 例 |
---|---|---|
= | 左側のオペランドに単純代入演算子は、右オペランドの値 | C = A + B + BがCに割り当てられた値を与えます |
+ = | また、代入演算子は、左オペランドに割り当てを追加することによって、左オペランドと右オペランドであります | C + = Aは、C = C + Aに相当します |
- = | 左オペランドと代入演算子を保存し、それは左オペランドと減算して割り当てられた右オペランドであります | C - = Aは、C = Cと同等です - A |
* = | 乗算と代入演算子は、左オペランド、右オペランドは左辺のオペランドに割り当てによって乗算され、 | C * = Aは、C = C * Aと同等です |
/ = | また、代入演算子では、左のオペランドに割り当てられた左オペランドと右オペランド部門です | C / = Aは、C = C / Aに相当します |
(%)= | モジュロと代入演算子は、それはモジュロに左オペランドおよび割り当てた後、左側のオペランドに右オペランドであります | Cの%= Aは、C = C%Aに相当します |
<< = | 左シフト代入演算子 | C << = 2はC = C << 2に相当します |
>> = | 右シフト代入演算子 | C >> = 2はC = Cと同等です>> 2 |
&= | ビットAND代入演算子 | C&= 2はC = C&2と同等です |
^ = | ビットごとのXOR代入演算子 | C ^ = 2はC = C ^ 2に相当します |
| = | ビット単位の論理和(OR)代入演算子 | C | = 2はC = Cと同等です| 2 |
簡単な例は、プログラムが代入演算子を直面している示しています。 コピーし、次のJavaプログラムを貼り付け、このプログラムをコンパイルして実行し、Test.javaファイルとして保存します。
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c ); c += a ; System.out.println("c += a = " + c ); c -= a ; System.out.println("c -= a = " + c ); c *= a ; System.out.println("c *= a = " + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c ); a = 10; c = 15; c %= a ; System.out.println("c %= a = " + c ); c <<= 2 ; System.out.println("c <<= 2 = " + c ); c >>= 2 ; System.out.println("c >>= 2 = " + c ); c >>= 2 ; System.out.println("c >>= a = " + c ); c &= a ; System.out.println("c &= 2 = " + c ); c ^= a ; System.out.println("c ^= a = " + c ); c |= a ; System.out.println("c |= a = " + c ); } }
次のような結果をコンパイルした上記の例は次のとおりです。
c = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c <<= 2 = 20 c >>= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10
条件演算子は、また、三項演算子として知られています。 オペレータは、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)
オペレータは、左側の変数にある場合は、オブジェクトを参照し、オペレータまたはオブジェクトのインターフェースクラス(クラス/インタフェース)の右側が、結果はtrueです。
次に例を示します。
String name = 'James'; boolean result = name instanceOf String; // 由于name是String类型,所以返回真
比較対象のオブジェクトのタイプの右と互換性がある場合、オペレータは、まだtrueを返します。
以下の例を見てみましょう。
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
複数のオペレータが誰誰の後、式に表示されたら? これは、オペレータの問題の優先順位に関する。 マルチオペレータ式では、演算子の優先順位は、最終的に広く変化に来て、異なる結果をもたらす可能性があります。
例えば、(1 + 3)+(3 + 2)* 2、この式は最高の優先度を計算する場合は、プラス記号を押して、答えは18で、乗算最も高い優先度に応じて、答えは14です。
ここでも、X = 7 + 3 * 2、乗算演算子は、加算演算子より優先順位が高いため、xは、13の代わりに20を持っていたところ、最初の3 * 2は6と7のプラスを得る計算します。
テーブルトップは、テーブル内の演算子の優先順位が最も高い、テーブルの下で最低の優先順位を持っています。
カテゴリ | 演算子 | 関連性 |
---|---|---|
接尾辞 | ()[]。(ドット演算子) | 左から右 |
単一の | + + - ! 〜 | 右から左 |
乗法 | * /% | 左から右 |
添加剤 | + - | 左から右 |
変位 | >> << >>> | 左から右 |
関係 | << = >> = | 左から右 |
同じ | ==!= | 左から右 |
ビット論理積 | & | 左から右 |
ビットごとのXOR | ^ | 左から右 |
ビット論理和 | | | 左から右 |
論理と | && | 左から右 |
論理的または | | | | 左から右 |
条件 | ? : | 右から左 |
割り当て | = + = - = * = / =%= >> = << =&= ^ = | = | 右から左 |
コンマ | 、 | 左から右 |