1. 概要

演算子は、あらゆるプログラミング言語の基本的な構成要素です。 演算子を使用して、値と変数の操作を実行します。

Javaは多くの演算子のグループを提供します。 それらは機能によって分類されます。

このチュートリアルでは、すべてのJava演算子をウォークスルーして、それらの機能とその使用方法を理解します。

2. 算術演算子

算術演算子を使用して、単純な数学演算を実行します。 算術演算子は、intIntegerなどのプリミティブな数値型とそのボックス型でのみ機能することに注意してください。

次に、算術演算子グループにどの演算子があるかを見てみましょう。

2.1. 加算演算子

加算演算子(+)を使用すると、2つの値を加算したり、2つの文字列を連結したりできます。

int ten = 5 + 5;
String youAndMe = "You " + "and" + " Me";

2.2. 減算演算子

通常、減算演算子(-)を使用して、ある値を別の値から減算します。

int five = 10 - 5;
int negative80 = 20 - 100;

2.3. 乗算演算子

乗算演算子(*)は、2つの値または変数を乗算するために使用されます。

int hundred = 20 * 5;
int fifteen = -5 * -3;

2.4. 除算演算子

除算演算子(/)を使用すると、左側の値を右側の値で除算できます。

int four = 20 / 5;
int seven = 15 / 2;

2つの整数値で除算演算子を使用する場合( バイト 短い int 、 と長いです )、注意する必要があります結果は商の値です。 残りは含まれていません

上記の例が示すように、 15/2 を計算すると、商は 7、であり、余りは1です。 したがって、 15/2 =7になります。

2.5. モジュロ演算子

除算演算子を使用して商を取得できます。 ただし、除算の余りを取得するだけの場合は、モジュロ演算子(%)を使用できます。

int one = 15 % 2;
int zero = 10 % 5;

3. 単項演算子

名前が示すように、単項演算子は1つの単一オペランドのみを必要とします。 たとえば、通常、単項演算子を使用して、変数または値をインクリメント、デクリメント、またはネガティブにします。

それでは、Javaで単項演算子の詳細を見てみましょう。

3.1. 単項プラス演算子

単項プラス演算子(+)は、正の値を示します。 数値が正の場合、「+」演算子を省略できます。

int five = +5; // same as: int five = 5

3.2. 単項マイナス演算子

単項プラス演算子の反対に、単項マイナス演算子(-)は値または式を否定します。

int negativeFive = -5;
int eighty = -(20 - 100);

3.3. 論理補数演算子

論理補数演算子(!)は、「NOT」演算子とも呼ばれます。 これを使用して、boolean変数または値の値を反転できます。

boolean aTrue = true;
boolean bFalse = !aTrue;

3.4. インクリメント演算子

インクリメント演算子(++)を使用すると、変数の値を1つ増やすことができます。

int number = 5;
number++; // number = 6

3.5. デクリメントオピアター

デクリメント演算子(–)は、インクリメント演算子の反対を行います。 変数の値を1つ減らします。

int number = 5;
number--; // number = 4

インクリメントおよびデクリメント演算子は変数でのみ使用できることに注意してください。 たとえば、「 int a = 5; a++;」で問題ありません。 ただし、式「 5++」はコンパイルされません。

4. 関係演算子

関係演算子は「比較演算子」とも呼ばれます。 基本的に、これらの演算子を使用して2つの値または変数を比較します。

4.1. 「等しい」演算子

「等しい」演算子(==)を使用して、両側の値を比較します。 それらが等しい場合、操作はtrueを返します。

int number1 = 5;
int number2 = 5;
boolean theyAreEqual = number1 == number2;

「等しい」演算子は非常に簡単です。 一方、 Object クラスは、 equals()メソッドを提供しています。 Object クラスはすべてのJavaクラスのスーパークラスであるため、すべてのJavaオブジェクトは equals()メソッドを使用して相互に比較できます。

2つのオブジェクトを比較する場合-たとえば、長いオブジェクトを比較する場合または文字列を比較する場合から比較方法を選択する必要がありますequals()メソッドと「equalto」演算子のメソッドを賢く

4.2. 「等しくない」演算子

「等しくない」演算子(!=)は、「==」演算子の反対を行います。 両側の値が等しくない場合、操作はtrueを返します。

int number1 = 5;
int number2 = 7;
boolean notEqual = number1 != number2;

4.3. 「より大きい」演算子

2つの値を「より大きい」演算子(>)と比較すると、左側の値が右側の値より大きい場合、trueが返されます。

int number1 = 7;
int number2 = 5;
boolean greater = number1 > number2;

4.4. 「以上」の演算子

「以上」の演算子(> =)は、両側の値を比較し、左側のオペランドが右側のオペランド以上の場合、trueを返します。

int number1 = 7;
int number2 = 5;
boolean greaterThanOrEqualTo = number1 >= number2;
number1 = 5;
greaterThanOrEqualTo = number1 >= number2;

4.5. 「未満」の演算子

「より小さい」演算子(<)は、両側の2つの値を比較して、 真実左側の値が右側の値よりも小さい場合:

int number1 = 4;
int number2 = 5;
boolean lessThan = number1 < number2;

4.6. 「以下」の演算子

同様に、「以下」の演算子(<=)は、両側の値を比較して、 真実左側のオペランドが右側以下の場合:

int number1 = 4;
int number2 = 5;
boolean lessThanOrEqualTo = number1 <= number2;
number1 = 5;
lessThanOrEqualTo = number1 <= number2;

5. 論理演算子

Javaには2つの論理演算子があります。論理AND演算子とOR演算子です。基本的に、それらの機能はデジタルのANDゲートおよびORゲートと非常によく似ています。エレクトロニクス。

通常、2つのオペランドを持つ論理演算子を使用します。これらは、booleanとして評価できる変数または式です。

次に、それらを詳しく見てみましょう。

5.1. 論理積演算子

論理積演算子( && ) 戻り値真実両方のオペランドが真実

int number1 = 7;
int number2 = 5;
boolean resultTrue = (number1 > 0) && (number1 > number2);

5.2. 論理OR演算子

‘とは異なり && ‘演算子、論理OR演算子( || ) 戻り値真実少なくとも1つのオペランドが真実

int number1 = 7;
int number2 = 5;
boolean resultTrue = (number1 > 100) || (number1 > number2);

論理OR演算子には短絡効果があることに注意してください。オペランドの1つがtrue、と評価されるとすぐに、評価せずにtrueを返します。残りのオペランド。

6. 三項演算子

三項演算子は、if-then-elseステートメントの短縮形です。 3つのオペランドがあるため、ternaryという名前が付けられています。 まず、標準のif-then-elseステートメントの構文を見てみましょう。

if ( condition ) {
    expression1
} else {
    expression2
}

上記のif-then-elseステートメントは、三項演算子を使用してコンパクトバージョンに変換できます。

その構文を見てみましょう:

condition ? expression1 : expression2

次に、簡単な例で三項演算子がどのように機能するかを理解しましょう。

int number = 100;
String greaterThan50 = number > 50 ? "The number is greater than 50" : "The number is NOT greater than 50";

7. ビット単位およびビットシフト演算子

Javaビット単位演算子」の記事ではビット単位演算子とビットシフト演算子の詳細について説明しているため、このチュートリアルではこれらの演算子を簡単に要約します。

7.1. ビットごとのAND演算子

ビットごとのAND演算子(&)は、入力値のビットごとのANDを返します。

int number1 = 12;
int number2 = 14;
int twelve = number1 & number2; // 00001100 & 00001110 = 00001100 = 12

7.2. ビットごとのOR演算子

ビットごとのOR演算子(|)は、入力値のビットごとのORを返します。

int number1 = 12;
int number2 = 14;
int fourteen = number1 | number2; // 00001100 | 00001110 = 00001110 = 14

7.3. ビット単位のXOR演算子

ビット単位のXOR(排他的論理和)演算子(^)は、入力値のビットごとのXORを返します。

int number1 = 12;
int number2 = 14;
int two = number1 ^ number2; // 00001100 ^ 00001110 = 00000010 = 2

7.4. ビット単位の補数演算子

ビット単位の補数演算子(〜)は単項演算子です。 値の補数表現を返し、入力値からすべてのビットを反転します。

int number = 12;
int negative13 = ~number; // ~00001100 = 11110011 = -13

7.5. 左シフト演算子

シフト演算子は、指定された回数だけビットを左または右にシフトします。

左シフト演算子(<<)は、右側のオペランドで定義された回数だけビットを左にシフトします。 左シフト後、右側の空きスペースは0で埋められます。

次に、数字の12を2回左シフトしましょう。

int fourtyeight = 12 << 2; // 00001100 << 2 = 00110000 = 48

n << x 数を増やすのと同じ効果があります nバツ 2の累乗。

7.6. 署名された右シフト演算子

符号付き右シフト演算子(>>)は、右側のオペランドで定義された回数だけビットを右にシフトし、結果として左側のボイドを0で埋めます。

シフト後の左端の位置は、符号拡張に依存することに注意してください。

次に、数字の12と-12で「符号付き右シフト」を2回実行して、違いを確認しましょう。

int three = 12 >> 2; // 00001100 >> 2 = 00000011 = 3
int negativeThree = -12 >> 2; // 11110100 >> 2 = 11111101 = -3

上記の2番目の例が示すように、数値が負の場合、各シフト後の左端の位置は符号拡張によって設定されます。

n >> x は、nの数をxの2の累乗で割るのと同じ効果があります。

7.7. 符号なし右シフト演算子

符号なし右シフト演算子(> >>)は、「>>」演算子と同じように機能します。 唯一の違いは、シフト後、左端のビットが0に設定されることです。

次に、数字の12と-12を2回符号なし右シフトして、違いを確認しましょう。

int three = 12 >>> 2; // 00001100 >> 2 = 00000011 = 3
int result = -12 >>> 2; // result = 1073741821 (11111111111111111111111111110100 >>> 2 = 00111111111111111111111111111101)

上記の2番目の例でわかるように、 >>>演算子は、数値が正か負かに関係なく、左側の空白を0で埋めます

8. 「instanceof」演算子

オブジェクトがある場合、それが特定のタイプインスタンスであるかどうかをテストしたい場合があります。 「instanceof」演算子は、次のことを行うのに役立ちます。

boolean resultTrue = Long.valueOf(20) instanceof Number;

9. 代入演算子

代入演算子を使用して、変数に値を代入します。 次に、Javaで使用できる代入演算子を見てみましょう。

9.1. 単純代入演算子

単純な代入演算子(=)は、Javaでは単純ですが、重要な演算子です。 実際、これまでの例では何度も使用しています。 右側の値を左側のオペランドに割り当てます。

int seven = 7;

9.2. 複合割り当て

算術演算子を学びました。 算術演算子と単純代入演算子を組み合わせて、複合代入を作成できます。

たとえば、「 a = a + 5 」を複合的な方法で書くことができます:「 a + =5」。

最後に、Javaでサポートされているすべての複合割り当ての例を見ていきましょう。

// Assuming all variables (a,b,c,d,e) have the initial value 10
a += 4; // a = 14, same as a = a + 4
b -= 4; // b = 6, same as b = b - 4
c *= 4; // c = 40, same as c = c * 4
d /= 4; // d = 2, same as d = d / 4
e %= 4; // e = 2, same as e = e % 4

10. 結論

Javaは、さまざまな機能のために多くの演算子グループを提供します。 この記事では、Javaの演算子を紹介しました。