この記事の目次
1. 演算子(Basic Operators)
● 算術演算子
主に数学的な演算を行う演算子です。
| 演算子 | 概要 | 例 |
|---|---|---|
| + | 加算 | 1 + 2 |
| - | 減算 | 2 – 1 |
| * | 乗算 | 2*2 |
| / | 除算 | 4.0 / 2 |
| % | 剰余 | 5 % 2 (結果:1) |
| + | 文字列の連結 | “A” + “B” (結果:AB) |
| ++ | インクリメント | x = 1;x++;(結果:2) |
| – – | デクリメント | x = 1;x– –;(結果:0) |
注意 : インクリメント/デクリメント演算子
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
int x = 1;
int y = x++;
System.out.println("yは" + y); // 結果:yは1
int a = 1;
int b = ++a;
System.out.println("bは" + b); // 結果:bは2
}
}● 代入演算子
代入演算子は変数に値を代入する演算子です
主な代入演算子:
| 演算子 | 概要 | 例 |
|---|---|---|
| = | 右辺の値を左辺に代入 | i = 1; |
| += | 右辺の値を加算した結果を代入 | i += 5 (結果:10) |
| -= | 右辺の値を減算した結果を代入 | i -= 5 (結果:0) |
| *= | 右辺の値を乗算した結果を代入 | i *= 5 (結果:25) |
| /= | 右辺の値で除算した結果を代入 | i /= 5 (結果:1) |
| %= | 右辺の値で除算した余りを代入 | i %= 5 (結果:0) |
| &= | 右辺の値で論理積演算した結果を代入 | i &= 10 (結果: 0) |
| |= | 右辺の値で論理和演算した結果を代入 | i |= 10 (結果:15) |
| ^= | 右辺の値で排他的論理和演算した結果を代入 | i ^= 10 (結果:15) |
| <<= | 右辺の値だけ左シフトした結果を代入 | i <<= 3 (結果:40) |
| >>= | 右辺の値だけ右シフトした結果を代入 | i >>= 10 (結果:0) |
| >>>= | 右辺の値だけ右シフトした結果を代入 | i >>>= 10 (結果:0) |
● 比較演算子
左辺と右辺の値を比較し、その結果をtrue/falseで返します。
主な比較演算子:
| 演算子 | 概要 | 例 |
|---|---|---|
| == | 左辺と右辺が等しければtrue | 5 == 5 (結果:true) |
| != | 左辺と右辺が等しくなければtrue | 5 != 5 (結果:false) |
| < | 左辺が右辺より小さければtrue | 5 < 7 (結果:true) |
| <= | 左辺が右辺以下であればtrue | 5 <= 3 (結果:false) |
| > | 左辺が右辺より大きければtrue | 7 > 5 (結果:true) |
| >= | 左辺が右辺以上であればtrue | 5 >= 7 (結果:false) |
| ?: | 「条件式 ? 式1 : 式2」。条件式がtrueなら式1、falseなら式2 | i = (0 >= 1) ? 2 : 3 (結果:iの値は3) |
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
int firstVariable, secondVariable;
firstVariable = 1;
secondVariable = 2;
System.out.println(firstVariable + " == " + secondVariable + "の比較:" + (firstVariable == secondVariable));
System.out.println(firstVariable + " != " + secondVariable + "の比較:" + (firstVariable != secondVariable));
System.out.println(firstVariable + " > " + secondVariable + "の比較:" + (firstVariable > secondVariable));
System.out.println(firstVariable + " >= " + secondVariable + "の比較:" + (firstVariable >= secondVariable));
System.out.println(firstVariable + " < " + secondVariable + "の比較:" + (firstVariable < secondVariable));
System.out.println(firstVariable + "<=" + secondVariable + "の比較:" + (firstVariable <= secondVariable));
}
}
● 論理演算子
複数の条件式を論理的に結合し、その結果をtrue/falseで返します。
主な論理演算子:
| 演算子 | 概要 | 例 |
|---|---|---|
| && | 左辺右辺がともにtrueの場合はtrue | true && false (結果:false) |
| || | 左辺右辺どちらかがtrueの場合はtrue | true || false (結果:true) |
| ! | 式がfalseの場合はtrue | !false (結果:true) |
| ^ | 左辺右辺いずれかがtrueで、かつ、ともにtrueでない場合にtrue | true^false (結果:true) |
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
int firstNumber = 8;
int secondNumber = 12;
System.out.println("(firstNumber < 10) && (secondNumber < 10)の結果は " + ((firstNumber < 10) && (secondNumber < 10))); // Toán tử AND
System.out.println("(firstNumber < 10) || (secondNumber < 10)の結果は " + !((firstNumber < 10) || (secondNumber < 10))); // Toán tử OR
}
}実行結果:

説明:
firstNumber = 8、secondNumber = 12なので、この順に解釈していきます:
(firstNumber < 10) && (secondNumber < 10) → (8 < 10) && (12 < 10) → TRUE && FALSE → FALSE !((firstNumber < 10) || (secondNumber < 10)) → !((8 < 10) || (12 < 10)) → !(TRUE || FALSE) → !TRUE → FALSE ● ビット演算子
整数を2進数で表した時、それぞれの桁を論理演算し、その結果を返します。
主なビット演算子
| 演算子 | 概要 | 例 |
|---|---|---|
| & | 論理積。左右双方の式にセットされているビット | 10 & 2 (結果:2) |
| | | 論理和。左右いずれかの式にセットされているビット | 10 | 2 (結果:10) |
| ^ | 排他的論理和(EXOR演算) | 10^2 (結果:8) |
| << | ビットを左シフト | 10 << 2 (結果:40) |
| >> | ビットを右シフト | 10 >> 2 (結果:2) |
| >>> | ビットを右シフト、左端は0埋め | 10 >>> 2 (結果:2) |
● キャスト演算
キャスト演算はオペランドの型を変える演算であり、単項演算の一種です。この演算を行う式は:
(型)式
説明:
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
double pi = 3.1;
double p = (int)(pi + 3.1); // (int)(pi + 3.1) -> (int)(6.2) -> 6
double q = (int)pi + 3.1; // (int)pi + 3.1 -> 3 + 3.1 -> 6.1
System.out.println("p は " + p);
System.out.println("q は " + q);
}
}実行結果:

2. 演算子の優先順位
以下に、優先順位の高いものからまとめます。
| 演算子の種類 | 演算子 |
|---|---|
| 式 | ( ) [ ] . |
| 単項演算子 | ! ~ ++ -- (キャスト) (右から評価する) |
| 剰余 | * / % |
| 加減 | + - |
| シフト | << >>> >> |
| 比較 | < <= > >= |
| 等値、非等値 | == != |
| 論理積(ビット演算子) | & |
| 排他的論理和(ビット演算子) | ^ |
| 論理和(ビット演算子) | | |
| 論理和(ビット演算子) | | |
| 論理積 | && |
| 論理和 | || |
| 条件演算子 | ? : |
| 代入演算子 | = += -= *= /= %= <<= >>>= >>= &= ^= |= (右から評価する) |
注意:演算子の優先順位を正確に覚えることは難しいだろうと思います。複雑な式では、適宜、塊を丸かっこで括るようにしましょう。丸かっこで括られた部分は優先して演算されます。
3. 総合問題例
半径rをキーボードから入力して、球の体積と表面積を計算し、小数点第3位まで四捨五入した結果を出力するプログラムを作れ。
回答:
package helloworld;
import java.text.DecimalFormat;//四捨五入ようのDecimalFormatクラスのimport
import java.util.Scanner; //Scannerクラスのimport
public class HelloWorld {
public static final float PI = 3.14f; //PI定数を宣言する
public static void main(String[] args) {
//Scannerクラスのインスタンスを作成する
Scanner scanner = new Scanner(System.in);
// 四捨五入のために、DecimalFormatのインスタンスを作成する
DecimalFormat decimalFormat = new DecimalFormat("#.##");
System.out.println("球の半径 r : ");
float radius = scanner.nextFloat(); //情報を取得して、 radius変数に代入する
// 球の表面積を計算する
float area = 4 * PI * radius * radius;
System.out.println("球の表面積 = " + decimalFormat.format(area));
// 球の体積を計算する
float vol = (float)4/3 * PI * radius * radius * radius;
System.out.println("球の体積 = " + decimalFormat.format(vol));
}
}
実行結果:

4. まとめ
ここまで、算術演算子、代入演算子、比較演算子などのJAVAの基本演算子を紹介しました。
プログラムを上手く処理させるように、演算子、演算子の優先順位、結合則などを理解し、演算問題をたくさん練習する必要があります。ぜひ、Java-基礎な知識カテゴリーの総合演習問題をご覧ください。
5. 演習問題
JAVAの基本演算子の演習問題