ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
比較演算子とは
Java における比較演算子(relational operator)は、左辺と右辺の値を比較してその結果を boolean 型の true / false で返す演算子です。if 文の条件、while ループの継続条件、三項演算子の評価式など、ほぼ全ての制御構文の中で使われます。
Java の比較演算子一覧
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
== | 左辺と右辺が等しいとき true | 5 == 5 | true |
!= | 左辺と右辺が等しくないとき true | 5 != 3 | true |
< | 左辺が右辺より小さいとき true | 3 < 5 | true |
> | 左辺が右辺より大きいとき true | 5 > 3 | true |
<= | 左辺が右辺以下のとき true | 5 <= 5 | true |
>= | 左辺が右辺以上のとき true | 5 >= 5 | true |
すべての結果は boolean 型なので、そのまま if や while の条件に置けます。
基本的な使い方
int score = 80;
if (score >= 60) {
System.out.println("合格");
} else {
System.out.println("不合格");
}
// while ループ
int i = 0;
while (i < 5) {
System.out.println(i);
i++;
}
// 三項演算子
String result = (score >= 60) ? "合格" : "不合格";
プリミティブ型と参照型での == の違い
Java で初心者がつまずく一番のポイントが == の挙動です。プリミティブ型(int long double boolean など)では値そのものを比較しますが、参照型(String や自作クラスなど)では「同じオブジェクト(同じアドレス)を指しているか」を比較します。
// プリミティブ型 ─ 値の比較
int a = 100;
int b = 100;
System.out.println(a == b); // true
// 参照型 ─ アドレスの比較
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // false (別オブジェクト)
System.out.println(s1.equals(s2)); // true (中身が等しい)
文字列リテラルは「文字列プール」で共有されるため == が偶然 true になることがありますが、これに頼るのは禁物です。文字列・オブジェクトの等価比較は必ず equals を使うのが Java の鉄則です。
大小比較 ─ compareTo
文字列やオブジェクトの大小を判定したいときは compareTo を使います。0 なら等しい、負なら左辺が小さい、正なら左辺が大きい、と読みます。
String a = "apple";
String b = "banana";
int r = a.compareTo(b);
if (r < 0) System.out.println("a < b"); // 出力される
else if (r > 0) System.out.println("a > b");
else System.out.println("a == b");
論理演算子との組み合わせ
比較演算子は &&(AND)||(OR)!(NOT)と組み合わせて複雑な条件を組み立てるのが一般的です。
int age = 25;
boolean hasLicense = true;
// 18 歳以上 かつ 免許あり
if (age >= 18 && hasLicense) {
System.out.println("運転できます");
}
// 子供 または シニア
if (age < 12 || age >= 65) {
System.out.println("料金割引");
}
よくある落とし穴
| NG | 原因 | OK |
|---|---|---|
str1 == str2 | 参照(アドレス)比較になっている | str1.equals(str2) |
if (a = 5) | 代入演算子になっている(Java はコンパイルエラー) | if (a == 5) |
0.1 + 0.2 == 0.3 | 浮動小数点誤差で false になる | Math.abs((0.1+0.2) - 0.3) < 1e-9 |
Integer x=128, y=128; x==y | オートボクシングで別オブジェクト | x.equals(y) または x.intValue()==y.intValue() |
Integer キャッシュの罠
Java のラッパー型 Integer は -128 〜 127 の範囲だけは内部キャッシュされており、同じ値なら同じインスタンスが返ります。この範囲を超えるとキャッシュされず、== が false になります。
Integer a = 100, b = 100;
System.out.println(a == b); // true (キャッシュ範囲内)
Integer x = 200, y = 200;
System.out.println(x == y); // false (キャッシュ外なので別オブジェクト)
System.out.println(x.equals(y)); // true
「動いていたのに本番だけ壊れた」の典型例なので、ラッパー型同士の等価比較は必ず equals を使う癖を付けてください。
null との比較
参照型で null かどうかを判定する唯一の方法が == です。equals は null に対して呼ぶと NullPointerException が出るため、左右どちらが null か分からない場合は Yoda 記法 や Objects.equals を使います。
String s = null;
// null 判定は == のみ
if (s == null) System.out.println("空です");
// NG: s が null だと NPE
// if (s.equals("hello")) ...
// OK: 文字列リテラルから呼ぶ(Yoda)
if ("hello".equals(s)) System.out.println("hello");
// OK: java.util.Objects を使う(推奨)
import java.util.Objects;
if (Objects.equals(s, "hello")) System.out.println("hello");
演算子の優先順位
比較演算子は算術演算子より低く、論理演算子より高い位置にあります。よって a + b > c は (a + b) > c と評価され、a > 0 && b < 10 は (a > 0) && (b < 10) と評価されます。可読性のため、複雑な条件は明示的に括弧で囲むのがおすすめです。
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?