こんにちは、かつコーチです。
Javaのコードを読んでいると、+や==、&&など記号がたくさん出てきて混乱しませんか。
これらはすべて演算子(値を計算・比較・結合するための記号)です。
この記事では、算術演算子・比較演算子・論理演算子の3種類を中心に、初心者がつまずきやすいポイントも含めて解説します。
演算子とは?
演算子が必要な理由
プログラムは、値を組み合わせて計算したり、条件を判定したりすることで動作します。
その計算・判定のルールを定義しているのが演算子です。
演算子を正しく理解していないと、if文や繰り返し処理で意図しない動作を引き起こしてしまいます。
演算子の3つの分類
Javaの演算子は大きく分けて次の3種類があります。
- 算術演算子:足し算・引き算など数値計算を行う(
+-*/%) - 比較演算子:2つの値の大小や等しさを判定する(
==!=><>=<=) - 論理演算子:複数の条件を組み合わせる(
&&||!)
基本の書き方:算術演算子
四則演算と剰余演算
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println(a + b); // 13
System.out.println(a - b); // 7
System.out.println(a * b); // 30
System.out.println(a / b); // 3
System.out.println(a % b); // 1
}
}
%は剰余演算子(割り算の余りを求める演算子)です。
偶数・奇数の判定や、一定周期ごとに処理を行いたいときによく使われます。
インクリメント・デクリメント演算子
int count = 0;
count++; // count = 1
count--; // count = 0
count++(後置インクリメント)と++count(前置インクリメント)は、単独の文であれば結果は同じですが、代入式の中で使うと評価順序が異なります。
初心者のうちは、count++;のように単独の文として使う分には気にしなくて問題ありません。
よくあるつまずきポイント・エラー対処
整数の割り算で小数が消えるつまずき
私が実際に初心者の頃にハマった一次情報を紹介します。
平均点を計算するコードで、以下のように書いてしまいました。
❌ Before
int totalScore = 70;
int studentCount = 3;
double average = totalScore / studentCount;
System.out.println(average); // 23.0 になってしまう(期待は23.333...)
原因は、int同士の割り算はJavaでは整数除算(小数点以下を切り捨てる割り算)になるためです。
右辺の計算がint型のまま行われ、その結果をdoubleに代入する段階ではすでに小数点以下が失われています。
✅ After
int totalScore = 70;
int studentCount = 3;
double average = (double) totalScore / studentCount;
System.out.println(average); // 23.333333333333332
割り算をする前にどちらか一方をdoubleにキャストすることで、計算全体が小数として行われるようになります。
「代入先の型」ではなく「計算そのものの型」を意識することが重要です。
==とequalsの取り違え
❌ Before
String name1 = new String("かつコーチ");
String name2 = new String("かつコーチ");
System.out.println(name1 == name2); // false
==は文字列の中身ではなく、オブジェクトとしての参照(メモリ上の場所)が同じかどうかを比較します。
そのため見た目が同じ文字列でも、newで別々に生成するとfalseになります。
✅ After
String name1 = new String("かつコーチ");
String name2 = new String("かつコーチ");
System.out.println(name1.equals(name2)); // true
文字列の中身を比較したいときは、必ずequalsメソッドを使いましょう。
この違いはString編で改めて詳しく解説します。
応用・一歩先の使い方
論理演算子のショートサーキット評価
int[] numbers = null;
if (numbers != null && numbers.length > 0) {
System.out.println("要素があります");
}
&&は左側の条件がfalseの時点で右側を評価しません。
これをショートサーキット評価(短絡評価)と呼びます。
上記の例では、numbersがnullの場合にnumbers.lengthを評価せずに済むため、NullPointerExceptionを防げます。
順序を意識して条件式を書くことは、実務でも頻繁に使うテクニックです。
まとめ
この記事のポイント
- 算術演算子・比較演算子・論理演算子の3種類の役割を押さえる
- int同士の割り算は整数除算になり、小数点以下が切り捨てられる
- 文字列の中身比較は
==ではなくequalsを使う &&はショートサーキット評価によりnullチェックとの組み合わせに便利
次に読むべき記事
- 変数とプリミティブ型の基本
- if文・switch文で条件分岐
タグ: Java, 初心者向け, 基本文法