Java演算子完全ガイド:算術/関係/ビット/論理/代入/三項/instanceof
演算子の分類
Javaは豊富な演算子セットを提供し、以下のグループに分類できます:
- 算術演算子
- 関係演算子
- ビット演算子
- 論理演算子
- 代入演算子
- その他演算子
算術演算子
代数と同様に数式で使用。A=10, B=20と仮定:
| 演算子 | 説明 | 例 |
|---|---|---|
| + | 加算 | A + B = 30 |
| - | 減算 | A - B = -10 |
| * | 乗算 | A * B = 200 |
| / | 除算 | B / A = 2 |
| % | 剰余 | B % A = 0 |
| ++ | インクリメント | B++ = 21 |
| -- | デクリメント | B-- = 19 |
関係演算子
A=10, B=20と仮定:
| 演算子 | 説明 | 例 |
|---|---|---|
| == | 等しいか | (A == B) は false |
| != | 等しくないか | (A != B) は true |
| > | 大きいか | (A > B) は false |
| < | 小さいか | (A < B) は true |
| >= | 以上か | (A >= B) は false |
| <= | 以下か | (A <= B) は true |
ビット演算子
整数型(long, int, short, char, byte)に適用可能。ビット単位で演算。a=60(0011 1100), b=13(0000 1101)の例:
a & b = 0000 1100 (12) a | b = 0011 1101 (61) a ^ b = 0011 0001 (49) ~a = 1100 0011 (-61, 2の補数)
| 演算子 | 説明 | 例 |
|---|---|---|
| & | ビットAND(両方1なら1) | (A & B) = 12 |
| | | ビットOR(どちらか1なら1) | (A | B) = 61 |
| ^ | ビットXOR(片方のみ1なら1) | (A ^ B) = 49 |
| ~ | ビット反転(1の補数) | (~A) = -61 |
| << | 左シフト | A << 2 = 240 |
| >> | 右シフト(符号拡張) | A >> 2 = 15 |
| >>> | 右シフト(ゼロ埋め) | A >>> 2 = 15 |
論理演算子
boolean型A=true, B=falseと仮定:
| 演算子 | 説明 | 例 |
|---|---|---|
| && | 論理AND(両方trueならtrue) | (A && B) = false |
| || | 論理OR(どちらかtrueならtrue) | (A || B) = true |
| ! | 論理NOT(真偽反転) | !(A && B) = true |
短絡評価:&&は左辺falseなら右辺評価せず、||は左辺trueなら右辺評価せず。
代入演算子
| 演算子 | 説明 | 例 |
|---|---|---|
| = | 単純代入 | C = A + B |
| += | 加算代入 | 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 |
その他の演算子
条件演算子(三項演算子) ? :
3オペランドでboolean式評価し、値を決定:
variable = (condition) ? valueIfTrue : valueIfFalse;
例
public class Test {
public static void main(String[] args) {
int a = 10, b;
b = (a == 1) ? 20 : 30; // false → 30
System.out.println("Value of b is : " + b);
b = (a == 10) ? 20 : 30; // true → 20
System.out.println("Value of b is : " + b);
}
}
Value of b is : 30 Value of b is : 20
instanceof演算子
オブジェクト参照変数専用。左辺オブジェクトが右辺のクラス/インターフェース型であるか(IS-A関係)判定:
(ObjectReference) instanceof (Class/InterfaceType)
例1
String name = "James";
boolean result = name instanceof String; // true
例2(継承)
class Vehicle {}
class Car extends Vehicle {}
Vehicle v = new Car();
boolean result = v instanceof Car; // true(CarはVehicleのサブクラス)
演算子優先順位(高→低)
| カテゴリ | 演算子 | 結合性 |
|---|---|---|
| 後置 | expr++ expr-- | 左→右 |
| 単項 | ++expr --expr +expr -expr ~ ! | 右→左 |
| 乗算 | * / % | 左→右 |
| 加算 | + - | 左→右 |
| シフト | << >> >> | 左→右 |
| 関係 | < > <= >= instanceof | 左→右 |
| 等価 | == != | 左→右 |
| ビットAND | & | 左→右 |
| ビットXOR | ^ | 左→右 |
| ビットOR | | | 左→右 |
| 論理AND | && | 左→右 |
| 論理OR | || | 左→右 |
| 条件 | ?: | 右→左 |
| 代入 | = += -= *= /= %= ^= |= <<= >>= >>>= | 右→左 |
次の章へ
次章ではJavaのループ制御(while/for/do-while、break/continue、拡張for文)を説明します。
Java
- Java演算子をマスター:種類、構文、実践例
- Java入出力をマスター:表示、読み取り、データフォーマット
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Java Vectorの理解:使い方、特徴、ArrayListとの比較