ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
if 文の基本構文
// 1: 単純な if
if (age >= 20) {
System.out.println("成人");
}
// 2: if-else
if (score >= 60) {
System.out.println("合格");
} else {
System.out.println("不合格");
}
// 3: if - else if - else
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else if (score >= 70) {
grade = "C";
} else {
grade = "F";
}
// 4: 中括弧は1文なら省略可(推奨しない)
if (age >= 20) System.out.println("成人");
中括弧は省略可能ですが、常に書くのが定石です。後から行を追加したとき、インデントが揃っているのに条件外になるバグ(Apple の goto fail 事件など)を防げます。
条件式と論理演算子
| 演算子 | 意味 | 短絡評価 |
|---|---|---|
&& | AND(両方真) | あり(左が false なら右は評価しない) |
|| | OR(どちらか真) | あり(左が true なら右は評価しない) |
! | NOT(反転) | - |
& / | | 論理(短絡なし) | なし(両側を必ず評価) |
// 短絡評価で NullPointerException 回避
if (user != null && user.isActive()) { ... }
// ^^^^^^^^^^^^ ここが false なら右は評価されない
// 範囲チェック
if (age >= 18 && age <= 65) { ... }
// 否定の組み合わせ - de Morgan
if (!(a && b)) ⇔ if (!a || !b)
if (!(a || b)) ⇔ if (!a && !b)
三項演算子(条件演算子)
「条件で値を選ぶ」ときに簡潔に書けます:
// 通常の if-else
String label;
if (age >= 20) {
label = "成人";
} else {
label = "未成年";
}
// 三項演算子で1行
String label = (age >= 20) ? "成人" : "未成年";
// ネスト(読みづらいので2段までに)
String grade = score >= 90 ? "A"
: score >= 80 ? "B"
: score >= 70 ? "C"
: "F";
// null 安全な取り出し
String name = (user != null) ? user.getName() : "Anonymous";
switch 式との使い分け (Java 14+)
「同じ式の値で多分岐」する場合は switch 式が読みやすく安全です:
// ❌ if-else で多分岐は冗長
String dayType;
if (day == 1 || day == 2 || day == 3 || day == 4 || day == 5) {
dayType = "weekday";
} else if (day == 6 || day == 7) {
dayType = "weekend";
} else {
dayType = "unknown";
}
// ✅ switch 式(Java 14+)
String dayType = switch (day) {
case 1, 2, 3, 4, 5 -> "weekday";
case 6, 7 -> "weekend";
default -> "unknown";
};
// 文字列やenumも可
String role = switch (user.getRole()) {
case ADMIN -> "管理者";
case USER -> "一般";
case GUEST -> "ゲスト";
};
| 使うべき場面 | 選択肢 |
|---|---|
| 1〜2分岐、シンプルな条件 | if / else |
| 値を返す簡単な選択 | 三項演算子 |
| 同じ値に対する多分岐 | switch 式 (Java 14+) |
| 型による分岐 | Pattern Matching (Java 17+) |
Pattern Matching (Java 17+)
// 旧来の書き方
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s.length());
}
// Java 16+: パターンマッチング
if (obj instanceof String s) {
System.out.println(s.length()); // s が String として使える
}
// switch のパターン (Java 21+)
return switch (shape) {
case Circle c -> Math.PI * c.radius() * c.radius();
case Square s -> s.side() * s.side();
case Triangle t -> 0.5 * t.base() * t.height();
case null -> 0;
default -> throw new IllegalArgumentException();
};
ネスト回避: Early Return
深いネストは可読性が低下します。異常系を先に returnするパターンで平坦化:
// ❌ 深いネスト
public String describe(User user) {
if (user != null) {
if (user.isActive()) {
if (user.getAge() >= 18) {
return "成人アクティブユーザー: " + user.getName();
} else {
return "未成年";
}
} else {
return "非アクティブ";
}
} else {
return "未登録";
}
}
// ✅ Early Return で平坦化
public String describe(User user) {
if (user == null) return "未登録";
if (!user.isActive()) return "非アクティブ";
if (user.getAge() < 18) return "未成年";
return "成人アクティブユーザー: " + user.getName();
}
null チェックと Optional の活用
// 古典的 null チェック
String name;
if (user != null && user.getProfile() != null) {
name = user.getProfile().getName();
} else {
name = "Anonymous";
}
// Optional + map / orElse
String name = Optional.ofNullable(user)
.map(User::getProfile)
.map(Profile::getName)
.orElse("Anonymous");
// Java 9+ ifPresent / ifPresentOrElse
Optional.ofNullable(user)
.ifPresentOrElse(
u -> System.out.println("Hi " + u.getName()),
() -> System.out.println("Anonymous")
);
// Objects.requireNonNullElse (Java 9+)
String name = Objects.requireNonNullElse(user.getName(), "Anonymous");
FAQ
Q: if文の括弧 () は省略できる?
A: Java では必須です(Python のように省略不可)。中括弧 {} は1文なら省略可能ですが、可読性のため常時付与を推奨。
Q: if と switch どちらが速い?
A: JITで最適化されるため通常は同等。switch は表ジャンプにコンパイルされる場合があり多分岐で僅かに有利。可読性で選んで OK。
Q: == と equals() はどちらを使う?
A: プリミティブと参照比較は ==、オブジェクトの内容比較は equals()。String の比較は必ず equals()(== は同一インスタンス比較)。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- if文 (条件分岐)
- switch文
人気ページ
- 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
コメントを削除してもよろしいでしょうか?