ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Java の論理演算子とは
論理演算子 (logical operator) は boolean 型の値を組み合わせて、AND / OR / NOT の真偽判定を行うための演算子です。if や while の条件式で日常的に使います。
論理演算子 一覧
| 演算子 | 意味 | 例 | 短絡評価 |
|---|---|---|---|
&& | 論理積 (AND) | a && b | あり |
|| | 論理和 (OR) | a || b | あり |
! | 否定 (NOT) | !a | - |
& | 論理積 (両辺評価) | a & b | なし |
| | 論理和 (両辺評価) | a | b | なし |
^ | 排他的論理和 (XOR) | a ^ b | なし |
基本例
boolean a = true;
boolean b = false;
System.out.println(a && b); // false (AND)
System.out.println(a || b); // true (OR)
System.out.println(!a); // false (NOT)
System.out.println(a ^ b); // true (XOR、異なるとき true)
// 条件式での実用例
int score = 85;
if (score >= 80 && score < 90) {
System.out.println("B 判定");
}
String name = null;
if (name != null && name.length() > 0) {
System.out.println(name); // null チェックを先に
}
短絡評価 (Short-circuit Evaluation)
Java の && と || は短絡評価を行います。左辺だけで結果が確定する場合、右辺は評価されません。
| 演算子 | 左辺の値 | 右辺の評価 |
|---|---|---|
&& | false | 評価しない (結果は false 確定) |
&& | true | 評価する |
|| | true | 評価しない (結果は true 確定) |
|| | false | 評価する |
// 典型的な null セーフ判定
String s = null;
if (s != null && s.equals("hello")) {
// s が null だと s.equals(...) は NullPointerException
// でも && は短絡評価で右辺をスキップするので安全
}
// 右辺で副作用がある場合の注意
int x = 0;
boolean result = (true || (++x > 0));
System.out.println(x); // 0 (++x は実行されない!)
result = (true | (++x > 0));
System.out.println(x); // 1 (両辺評価される)
&& と & の違い
&& は短絡 AND、& は非短絡 AND (ビット AND としての側面もあり)。boolean 同士なら結果は同じですが、評価順が異なります。
// boolean 同士 -> 論理演算子として動作
boolean r1 = true & false; // false
boolean r2 = true | false; // true
// int 同士 -> ビット演算子として動作
int b1 = 0b1100 & 0b1010; // 0b1000 = 8
int b2 = 0b1100 | 0b1010; // 0b1110 = 14
int b3 = 0b1100 ^ 0b1010; // 0b0110 = 6
// boolean に対して && のかわりに & を使うとパフォーマンス低下や
// 想定外の副作用呼び出しが起きるため、原則 && / || を使う
! 演算子 — 否定
boolean isEmpty = list.isEmpty();
if (!isEmpty) {
// 空でないときに処理
}
// よくあるパターン
if (!str.equals("")) { ... }
// より良い書き方
if (!"".equals(str)) { ... } // str が null でも NPE にならない
優先順位と括弧
| 優先順位 | 演算子 |
|---|---|
| 高 | ! |
| ↓ | 比較演算子 (< > == など) |
| ↓ | & |
| ↓ | ^ |
| ↓ | | |
| ↓ | && |
| 低 | || |
// 優先順位による落とし穴
boolean r = a || b && c; // a || (b && c) と解釈される
// 意図が「(a || b) && c」なら明示的に括弧
boolean r2 = (a || b) && c;
// 推奨: 複雑な式は必ず括弧で意図を明示
if ((age >= 18 && age < 65) || hasLicense) {
// ...
}
真理値表
| A | B | A && B | A || B | A ^ B | !A |
|---|---|---|---|---|---|
| true | true | true | true | false | false |
| true | false | false | true | true | false |
| false | true | false | true | true | true |
| false | false | false | false | false | true |
FAQ
Q: && と & はどちらを使うべき?
A: boolean 同士なら短絡評価の && / || を使うのが定石。& | はビット演算用と考える。
Q: if (a == true) と if (a) はどっち?
A: if (a) が標準。冗長な比較は可読性を落とすので避ける。
Q: NullPointerException を避けるには?
A: if (obj != null && obj.method()) のように null チェックを左に置く。Objects.nonNull(obj) + ストリームも使える。
関連記事
- 比較演算子 —
==!=<等の比較 - 算術演算子 / 代入演算子 / ビット演算子
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?