Java 言語の演算子には、優先順位があるだけでなく、結合性の機能もあります。式に複数の演算子が含まれる場合、実行順序は演算子の優先順位の規則に従うだけでなく、演算を左から右に実行するか右から左に実行するかを決定するために演算子の結合性によっても制約される必要があります。 。これらの演算子は、オペランドの数に応じて単項演算子、二項演算子、三項演算子に分類できます。
最も基本的な演算子には、算術演算子、代入演算子、論理演算子、関係演算子などが含まれます。この記事では算術演算子について詳しく紹介します。
Java の算術演算子は、主に数値データの算術演算を整理するために使用され、演算に関係するオペランドに応じて単項演算子と二項演算子に分類できます。
単項演算子
-、++、– という 3 つの算術単項演算があります。詳細については、表 1 を参照してください。
オペレーター | 名前 | 説明する | 例 |
---|---|---|---|
– | 否定記号 | 否定演算 | b=-a |
++ | 一を足す | 最初に値を取得してから 1 を追加するか、最初に 1 を追加してから値を取得します | a++ または ++a |
— | 1 減らす | 最初に値を取得してから 1 を減算するか、最初に 1 を減算してから値を取得します | a– または –a |
表 1 で、-a は a の逆演算で、a++ または a– は式の演算が完了した後に a に 1 を加算または減算します。そして、++a または –a は、最初の 1 に 1 を加算または減算してから式の演算を実行します。
int a = 12;
System.out.println(-a);
int b = a++;
System.out.println(b);
b = ++a;
System.out.println(b);
上記のコードの 2 行目は -a で、変数 a を反転し、その結果の出力は -12 になります。コードの 4 行目では、まず b 変数に値を代入し、1 を加算します。つまり、最初に値を代入し、次に ++ を代入するため、出力結果は 12 になります。コードの 6 行目では、a に 1 を加算し、次に a を変数 b に割り当てます。つまり、最初に ++ を実行し、次に代入を行うため、出力結果は 14 になります。
出力結果は次の図に示されています。
++ と — については、「 Java インクリメント演算子とデクリメント演算子 (++ と –) 」セクションを直接参照できます。
二項演算子
Java 言語の算術演算子の機能は四則演算を行うことであり、頻繁に使用される加算 (+)、減算 (-)、乗算 (*)、除算 (\) に加えて、剰余演算 (%) もあります。 。加算 (+)、減算 (-)、乗算 (*)、除算 (\) は、私たちが普段触れている数学演算と同じ意味を持ちます。詳細については、表 2 を参照してください。
オペレーター | 名前 | 説明する | 例 |
---|---|---|---|
+ | 追加 | a と b の合計を求めます。文字列連結を実行するために String 型にも使用できます。 | a + b |
– | 減らす | aとbの違いを見つけてください | a – b |
* | 取った | a と b の積を求めます | a * b |
/
|
削除 | a を b で割った商を求めます | a / b |
%
|
残りを受け取ります | aをbで割ったときの余りを求めます | a%b |
算術演算子はすべて二項演算子、つまり 2 つのオペランドを結合する演算子です。優先順位は*、/、%が同じ動作レベルで、+、-よりも高くなります(+、-は同じレベル)。例えば:
int a = 4、b = 2、c = 3;
int d = a *(b + c)%c;
この演算のルールは数学演算のルールと同じです。まず、代入記号 (=) の右側にある対になった括弧内の値を計算し、次に左から右へ乗算を計算し、最後に剰余演算を実行します。式の結果は 2 になり、次に 2 を d に代入します。 。
例えば:
①int x=2,y=1; 式 y/x の結果は 0 になります。
②float x=2.0f; int y=1; 式y/xの結果は0.5です。
①では整数変数xとyを分けても結果は整数データ0のままですが、②では2種類の異なるデータを計算に使用するため、最初に型変換を行う必要があり、int型yはx と同じ型の float に変換されてから除算されると、最終結果は float 型の数値 0.5 になります。
【例1】種類の異なる2つの数値を出力し、加算、減算、乗算、除算、剰余を実行し、その結果を入力するプログラムを作成します。
実装コードは次のとおりです。
public static void main(String[] args) {
float f1 = 9 % 4;// 余りを浮動小数点型で保存する
double da = 9 + 4.5; // 倍精度加算
double db = 9 - 3.0; // 倍精度減算
double dc = 9 * 2.5; // 倍精度乗算
double dd = 9 / 3.0; // 倍精度除算
double de = 9 % 4; // 倍精度余りを取得する
System.out.println("整数の算術演算"); // 整数の加算、減算、乗算、除算および余り
System.out.printf("9+4=%d \n", 9 + 4);
System.out.printf("9-4=%d \n", 9 - 4);
System.out.printf("9*4=%d \n", 9 * 4);
System.out.printf("9/4=%d \n", 9 / 4);
System.out.printf("9%%4=%d \n", 9 % 4);
System.out.println("\n浮動小数点数の算術演算"); // 浮動小数点数の加算、減算、乗算、除算、余り
System.out.printf("9+4.5f=%f \n", 9 + 4.5f);
System.out.printf("9-3.0f=%f \n", 9 - 3.0f);
System.out.printf("9*2.5f=%f \n", 9 * 2.5f);
System.out.printf("9/3.0f=%f \n", 9 / 3.0f);
System.out.printf("9%%4=%f \n", f1);
System.out.println("\n倍精度数の算術演算"); // 倍精度数の加算、減算、乗算、除算、余り
System.out.printf("9+4.5=%4.16f \n", da);
System.out.printf("9-3.0=%4.16f \n", db);
System.out.printf("9*2.5=%4.16f \n", dc);
System.out.printf("9/3.0=%4.16f \n", dd);
System.out.printf("9%%4=%4.16f \n", de);
System.out.println("\n文字の算術演算"); // 文字の加算、減算
System.out.printf("'A'+32=%d \n", 'A' + 32);
System.out.printf("'A'+32=%c \n", 'A' + 32);
System.out.printf("'a'-'B'=%d \n", 'a' - 'B');
}
ファイルを保存して実行すると、出力は次のようになります。
// 整数の算術演算
9+4=13
9-4=5
9*4=36
9/4=2
9%4=1
// 浮動小数点数の算術演算
9+4.5f=13.500000
9-3.0f=6.000000
9*2.5f=22.500000
9/3.0f=3.000000
9%4=1.000000
// ダブル精度数の算術演算
9+4.5=13.5000000000000000
9-3.0=6.0000000000000000
9*2.5=22.5000000000000000
9/3.0=3.0000000000000000
9%4=1.0000000000000000
// 文字の算術演算
'A'+32=97
'A'+32=a
'a'-'B'=31
この例では、算術演算を実行するために 4 つのタイプが使用されます。このうち、整数型の結果が最も分かりやすく、浮動小数点型と倍精度型は返される結果がすべて小数点を持ち、文字型は文字をASCIIコードに変換して演算します。
出力結果から、整数間の演算結果は整数部分のみが予約され、浮動小数点演算では小数点以下 6 桁が予約され、倍精度演算では小数点以下 16 桁が予約されていることがわかります。
注: Java 言語の算術演算子の優先順位は、加算と減算よりも乗算と除算です。たとえば、式「ab*c」では、b の左側はマイナス記号、右側は乗算記号であり、乗算記号はマイナス記号よりも優先されるため、式は次のように変換できます。 「a-(b*c)」。
「a-b+c」のように、式内の複数の算術演算子の優先順位が同じ場合、順序は演算子の組み合わせ方向に従って決定されます。算術演算子の結合方向は「左から右」、つまり最初に左、次に右です。したがって、最初に b にマイナス記号が結合され、「ab」の演算が実行され、次に c を加算する演算が実行されます。

算術代入演算子は単なる省略表現であり、通常は変数自体を変更するために使用されます。詳細については、表 3 を参照してください。
オペレーター | 名前 | 例 |
---|---|---|
+= | プラス代入 | a += b、a += b+3 |
-= | マイナス代入 | a -= b |
*= | 乗算代入 | a *= b |
/= | 割り当て解除 | a /= b |
%= | 剰余代入 | a %= b |
サンプルコードは次のとおりです。
int a = 1;
int b = 2;
a += b; // Equals to a = a + b
System.out.println(a);
a += b + 3; // Equals to a = a + b + 3
System.out.println(a);
a -= b; // Equals to a = a - b
System.out.println(a);
a *= b; // Equals to a=a*b
System.out.println(a);
a /= b; // Equals to a=a/b
System.out.println(a);
a %= b; // Equals to a=a%b
System.out.println(a);
上記の例はそれぞれ、整数に対して +=、-=、*=、/=、および %= 演算を実行します。ここでは特定のステートメントを繰り返しません。