Java演算子をマスター:種類、構文、実践例
Java演算子
このチュートリアルでは、Javaのさまざまな演算子の種類、構文、例を用いた使い方を学びます。
演算子は変数や値に対して操作を実行する記号です。例えば、+は加算に使用される演算子であり、*も乗算に使用される演算子です。
Javaの演算子は6種類に分類できます:
- 算術演算子
- 代入演算子
- 関係演算子
- 論理演算子
- 単項演算子
- ビット演算子
1. Java算術演算子
算術演算子は変数やデータに対して算術演算を実行するために使用されます。例えば、
a + b;
ここでは、+演算子を使用して2つの変数aとbを加算しています。同様に、Javaにはさまざまな算術演算子があります。
| 演算子 | 演算 |
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余演算(除算後の余り) |
例1: 算術演算子
class Main {
public static void main(String[] args) {
// 変数を宣言
int a = 12, b = 5;
// 加算演算子
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("a % b = " + (a % b));
}
}
出力
a + b = 17 a - b = 7 a * b = 60 a / b = 2 a % b = 2
上記の例では、+、-、*演算子を使用して加算、減算、乗算演算を計算しました。
/ 除算演算子
プログラムのa / b演算に注目してください。/演算子は除算演算子です。
2つの整数で除算演算子を使用すると、結果の商も整数になります。一方、オペランドのいずれかが浮動小数点数の場合、結果も浮動小数点数になります。
Javaでは、(9 / 2) は 4
(9.0 / 2) は 4.5
(9 / 2.0) は 4.5
(9.0 / 2.0) は 4.5
% 剰余演算子
剰余演算子%は余りを計算します。a = 7をb = 4で割ると、余りは3です。
注意: %演算子は主に整数で使用されます。
2. Java代入演算子
代入演算子はJavaで変数に値を代入するために使用されます。例えば、
int age;
age = 5;
ここでは、=が代入演算子です。右側の値を左側の変数に代入します。つまり、5が変数ageに代入されます。
Javaで利用可能なその他の代入演算子を見てみましょう。
| 演算子 | 例 | 等価 |
|---|---|---|
= | a = b; | a = b; |
+= | a += b; | a = a + b; |
-= | a -= b; | a = a - b; |
*= | a *= b; | a = a * b; |
/= | a /= b; | a = a / b; |
%= | a %= b; | a = a % b; |
例2: 代入演算子
class Main {
public static void main(String[] args) {
// 変数を作成
int a = 4;
int var;
// = を使用して値を代入
var = a;
System.out.println("var using =: " + var);
// += を使用して値を代入
var += a;
System.out.println("var using +=: " + var);
// *= を使用して値を代入
var *= a;
System.out.println("var using *=: " + var);
}
}
出力
var using =: 4 var using +=: 8 var using *=: 32
3. Java関係演算子
関係演算子は2つのオペランド間の関係をチェックするために使用されます。例えば、
// aがbより小さいかチェック
a < b;
ここでは、<演算子が関係演算子です。aがbより小さいかどうかをチェックします。
trueまたはfalseを返します。
| 演算子 | 説明 | 例 |
|---|---|---|
== | 等しい | 3 == 5はfalseを返す |
!= | 等しくない | 3 != 5はtrueを返す |
> | より大きい | 3 > 5はfalseを返す |
< | より小さい | 3 < 5はtrueを返す |
>= | 以上 | 3 >= 5はfalseを返す |
<= | 以下 | 3 <= 5はtrueを返す |
例3: 関係演算子
class Main {
public static void main(String[] args) {
// 変数を作成
int a = 7, b = 11;
// aとbの値
System.out.println("a is " + a + " and b is " + b);
// == 演算子
System.out.println(a == b); // false
// != 演算子
System.out.println(a != b); // true
// > 演算子
System.out.println(a > b); // false
// < 演算子
System.out.println(a < b); // true
// >= 演算子
System.out.println(a >= b); // false
// <= 演算子
System.out.println(a <= b); // true
}
}
注意: 関係演算子は意思決定とループで使用されます。
4. Java論理演算子
論理演算子は式がtrueかfalseかをチェックするために使用されます。意思決定で使用されます。
| 演算子 | 例 | 意味 |
|---|---|---|
&& (論理AND) | expression1 && expression2 | expression1とexpression2の両方がtrueの場合のみtrue |
|| (論理OR) | expression1 || expression2 | expression1またはexpression2のいずれかがtrueの場合true |
! (論理NOT) | !expression | expressionがfalseの場合true、逆も同様 |
例4: 論理演算子
class Main {
public static void main(String[] args) {
// && 演算子
System.out.println((5 > 3) && (8 > 5)); // true
System.out.println((5 > 3) && (8 < 5)); // false
// || 演算子
System.out.println((5 < 3) || (8 > 5)); // true
System.out.println((5 > 3) || (8 < 5)); // true
System.out.println((5 < 3) || (8 < 5)); // false
// ! 演算子
System.out.println(!(5 == 3)); // true
System.out.println(!(5 > 3)); // false
}
}
プログラムの動作
(5 > 3) && (8 > 5)は、(5 > 3)と(8 > 5)の両方がtrueなのでtrueを返す(5 > 3) && (8 < 5)は、式(8 < 5)がfalseなのでfalseを返す(5 < 3) || (8 > 5)は、式(8 > 5)がtrueなのでtrueを返す(5 > 3) && (8 > 5)は、式(5 > 3)がtrueなのでtrueを返す(5 > 3) && (8 > 5)は、(5 < 3)と(8 < 5)の両方がfalseなのでfalseを返す!(5 == 3)は5 == 3がfalseなのでtrueを返す!(5 > 3)は5 > 3がtrueなのでfalseを返す
5. Java単項演算子
単項演算子は1つのオペランドのみで使用されます。例えば、++は変数の値を1増やす単項演算子です。つまり、++5は6を返します。
単項演算子の種類:
| 演算子 | 意味 |
|---|---|
+ | 単項プラス: 数値は無指定で正なので使用する必要はない |
- | 単項マイナス: 式の符号を反転 |
++ | インクリメント演算子: 値を1増やす |
-- | デクリメント演算子: 値を1減らす |
! | 論理補数演算子: ブーリアンの値を反転 |
インクリメントとデクリメント演算子
Javaはインクリメントとデクリメント演算子++と--も提供します。++はオペランドの値を1増やし、--は1減らします。例えば、
int num = 5;
// numを1増やす
++num;
ここでは、numの値が初期値5から6に増加します。
例5: インクリメントとデクリメント演算子
class Main {
public static void main(String[] args) {
// 変数を宣言
int a = 12, b = 12;
int result1, result2;
// 元の値
System.out.println("Value of a: " + a);
// インクリメント演算子
result1 = ++a;
System.out.println("After increment: " + result1);
System.out.println("Value of b: " + b);
// デクリメント演算子
result2 = --b;
System.out.println("After decrement: " + result2);
}
}
出力
Value of a: 12 After increment: 13 Value of b: 12 After decrement: 11
上記のプログラムでは、++と--演算子をプレフィックス(++a、--b)として使用しています。これらはポストフィックス(a++、b++)としても使用できます。
これらの演算子をプレフィックスとして使用するかポストフィックスとして使用するかでわずかな違いがあります。
詳細については、インクリメントとデクリメント演算子を参照してください。
6. Javaビット演算子
Javaのビット演算子は個々のビットに対して演算を実行するために使用されます。例えば、
35のビット補数演算
35 = 00100011 (2進数)
~ 00100011
________
11011100 = 220 (10進数)
ここでは、~がビット演算子です。各ビットの値を反転します(0を1に、1を0に)。
Javaに存在するさまざまなビット演算子:
| 演算子 | 説明 |
|---|---|
~ | ビット補数 |
<< | 左シフト |
>> | 右シフト |
>>> | 符号なし右シフト |
& | ビットAND |
^ | ビット排他的OR |
これらの演算子は一般的にJavaではあまり使用されません。詳細については、Javaビット演算子とビットシフト演算子を参照してください。
その他の演算子
これらの演算子以外にも、Javaには追加の演算子があります。
Java instanceof演算子
instanceof演算子は、オブジェクトが特定のクラスのインスタンスであるかどうかをチェックします。例えば、
class Main {
public static void main(String[] args) {
String str = "Programiz";
boolean result;
// strがStringクラスのインスタンスかチェック
result = str instanceof String;
System.out.println("Is str an object of String? " + result);
}
}
出力
Is str an object of String? true
ここでは、strはStringクラスのインスタンスです。したがって、instanceof演算子はtrueを返します。詳細については、Java instanceofを参照してください。
Java三項演算子
三項演算子(条件演算子)はif-then-elseステートメントの短縮形です。例えば、
variable = Expression ? expression1 : expression2
動作は以下の通りです:
Expressionがtrueの場合、expression1がvariableに代入されます。Expressionがfalseの場合、expression2がvariableに代入されます。
三項演算子の例を見てみましょう:
class Java {
public static void main(String[] args) {
int februaryDays = 29;
String result;
// 三項演算子
result = (februaryDays == 28) ? "Not a leap year" : "Leap year";
System.out.println(result);
}
}
出力
Leap year
上記の例では、三項演算子を使用して年がうるう年かどうかをチェックしています。詳細については、Java三項演算子を参照してください。
Java演算子について理解したら、次は演算子が評価される順序について知る番です。詳細については、Java演算子の優先順位を参照してください。
Java
- C#演算子完全ガイド:C#における演算子の包括的解説
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C言語演算子完全ガイド:算術・関係・論理・ビット演算子
- Python 演算子完全マスター: 包括的ガイド
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上