1. Javaの「OR(または)」とは?
Javaにおける OR(または) は、主に 条件分岐(if文など)で「どちらか一方でも成り立てばOK」という判断を行うために使われます。
プログラミング初心者が最初につまずきやすいポイントでもあり、「AND(かつ)」との違いや、記号の意味を正しく理解することが重要です。
1.1 OR条件が必要になる典型的な場面
OR条件は、実務・学習のどちらでも非常によく登場します。例えば、次のようなケースです。
- どちらかの条件を満たせば処理したい場合
- 休日 または 週末なら処理を分岐したい
- 複数の入力条件をまとめてチェックしたい場合
- 値が
nullまたは 空文字ならエラーにしたい
- 値が
- 権限や状態を複数パターンで許可したい場合
- 管理者 または 本人なら操作を許可する
日常会話で言えば、
「A または B のどちらかならOK」
という判断を、そのままコードに落とし込むイメージです。
1.2 JavaでORを表す基本的な書き方
Javaでは、論理的なORを表すために ||(パイプを2本) という演算子を使います。
if (conditionA || conditionB) {
// conditionA または conditionB のどちらかが true のときに実行される
}このコードは、次の意味になります。
conditionAがtrueまたはconditionBがtrue
どちらか一方でも true であれば、if ブロックの中が実行されます。
1.3 「OR」は日本語の思考に近い条件判断
OR条件は、日本語の感覚に非常に近いため、最初は「文章に置き換える」ことが理解の近道です。
if (isHoliday || isWeekend) {
System.out.println("今日は休みです");
}これは日本語にすると、
「祝日 または 週末 なら、『今日は休みです』と表示する」
という意味になります。
初心者のうちは、
- 記号をそのまま覚えようとする
- 文法として暗記しようとする
よりも、一度日本語に直して考えるほうが、理解が早く、ミスも減ります。
1.4 この記事でこれから解説すること
「java or」で検索する多くの人は、単に OR の意味だけでなく、次の点で混乱しています。
||と|は何が違うのか?- なぜ「右側が実行されない」ことがあるのか?
- AND(
&&)と一緒に使うときの注意点は? - 実務で安全に使うにはどう書けばいいのか?
この記事では、こうした疑問に対して、
- 基本 → 仕組み → 注意点 → 実務での使い方
という順番で、初心者にも分かるように丁寧に解説していきます。
2. 論理OR演算子 || の基本(if文で最も使う)
JavaでOR条件を書くとき、最も基本かつ最も頻繁に使われるのが論理OR演算子 || です。
「java or」で検索した場合、まず理解すべき対象はこの || だと言って問題ありません。
2.1 || の意味と役割
論理OR演算子 || は、左右どちらか一方の条件が true であれば、全体が true になる演算子です。
条件A || 条件Bこの式は、次のように評価されます。
| 条件A | 条件B | 結果 |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
つまり、
両方が false のときだけ false
それ以外はすべて true
という非常にシンプルなルールです。
2.2 if文での基本的な使い方
実際のコードでは、|| はほぼ必ず if文の条件式 の中で使われます。
int age = 20;
if (age >= 18 || age == 17) {
System.out.println("入場可能です");
}この場合の意味は、
「年齢が18歳以上 または 17歳なら入場可能」
です。
どちらか一方でも条件を満たしていれば、if ブロックの中が実行されます。
2.3 || は boolean 同士をつなぐ演算子
|| の左右に書けるのは、必ず boolean 型(true / false)になる式です。
正しい例:
if (score >= 80 || score == 100) {
// OK
}間違った例:
if (score || 100) {
// コンパイルエラー
}数値や文字列をそのまま OR でつなぐことはできません。
必ず、
- 比較演算子(
==,>=,<など) - boolean変数
- booleanを返すメソッド
と組み合わせて使います。
2.4 OR条件を使うとコードが読みやすくなる場面
|| を使うことで、複数の条件を 一つの判断としてまとめる ことができます。
if (status.equals("ADMIN") || status.equals("OWNER")) {
System.out.println("操作が許可されています");
}このコードは、
「管理者 または 所有者なら操作を許可する」
という意味が、非常に分かりやすく表現されています。
もしORを使わずに書くと、次のように冗長になってしまいます。
if (status.equals("ADMIN")) {
System.out.println("操作が許可されています");
} else if (status.equals("OWNER")) {
System.out.println("操作が許可されています");
}OR条件を使うことで、
- コード量が減る
- 意図が一目で分かる
- 修正・追加がしやすくなる
といったメリットがあります。
2.5 初心者が最初に覚えるべきポイント
この段階では、次の3点を押さえておけば十分です。
||は 「どちらか一方が true なら OK」- if文の条件式で使うのが基本
- 左右は 必ず boolean になる式
3. 重要:|| は短絡評価(ショートサーキット)する
論理OR演算子 || を理解するうえで、最も重要な特徴が
短絡評価(ショートサーキット評価)です。
ここを理解しているかどうかで、
安全なコードが書けるか/バグを生むかが大きく変わります。
3.1 短絡評価(ショートサーキット)とは?
短絡評価とは、左側の条件だけで結果が確定した場合、右側を評価しないという仕組みです。
OR条件の場合、ルールは次のとおりです。
- 左側が
true→ 全体は必ず true - そのため 右側は実行されない
if (conditionA || conditionB) {
// 処理
}このとき、
conditionAがtrueなら
→conditionBは 評価されません
3.2 短絡評価が起きる具体例
次のコードを見てみましょう。
boolean result = true || expensiveCheck();この場合、
- 左側が
true - OR条件なので結果は確定
そのため、expensiveCheck() メソッドは 呼び出されません。
これはエラーではなく、Javaの仕様どおりの正しい動作です。
3.3 なぜ短絡評価が重要なのか?
短絡評価には、実務上とても大きなメリットがあります。
1. 無駄な処理を避けられる
if (isAdmin || checkDatabase()) {
// 処理
}- 管理者なら
checkDatabase()を呼ぶ必要がない - DBアクセスや重い処理を自動的にスキップできる
➡ パフォーマンス向上
2. 例外(エラー)を防げる
短絡評価は、エラー回避のために意図的に使われることも非常に多いです。
if (user == null || user.isGuest()) {
// ゲスト処理
}このコードでは、
user == nullがtrueの場合user.isGuest()は実行されない
そのため、NullPointerException が発生しません。
初心者がよく書いてしまう危険なコードはこちらです。
if (user.isGuest() || user == null) {
// 危険:NullPointerException の可能性あり
}➡ 短絡評価を前提に、nullチェックは必ず左側に置く
これは実務ではほぼ常識です。
3.4 短絡評価で注意すべき落とし穴
短絡評価は便利ですが、知らずに使うと混乱の原因にもなります。
右側に「副作用のある処理」を書かない
if (flag || count++) {
// 何かの処理
}この場合、
flagがtrueだとcount++が 実行されない
「必ず実行されると思っていた処理が実行されない」
というバグにつながりやすくなります。
3.5 初心者向けまとめ(短絡評価)
このセクションの要点は次のとおりです。
||は 左側が true なら右側を評価しない- これはバグではなく Javaの仕様
- nullチェックや重い処理の回避に積極的に使う
- 副作用のある処理を条件式に書かない
4. || と | の違い(ここが一番つまずきやすい)
「java or」で検索している人の多くが混乱している原因が、|| と | の見た目が似ている問題です。
結論から言うと、この2つは目的も性質もまったく別物です。
4.1 結論から理解する:|| と | は用途が違う
まずは違いを一言で整理します。
||:論理OR演算子(条件分岐用・短絡評価あり)|:ビットOR演算子(数値のビット操作用・短絡評価なし)
初心者のうちは、if文では基本的に || だけを使う
これを覚えておけば、ほぼ困りません。
4.2 booleanで使った場合の違い
実は | は boolean 同士でも使えます。
ここが混乱を招くポイントです。
boolean a = true;
boolean b = false;
System.out.println(a || b); // true
System.out.println(a | b); // true結果だけを見ると、どちらも true になります。
しかし、評価の仕方がまったく違います。
4.3 最大の違い:短絡評価の有無
|| の場合(短絡評価あり)
if (a || check()) {
// 処理
}aが true- 結果は確定
check()は 実行されない
| の場合(短絡評価なし)
if (a | check()) {
// 処理
}aが true でもcheck()は 必ず実行される
ここが 決定的な違い です。
4.4 | を条件式で使う危険性
初心者がやってしまいがちなミスがこちらです。
if (user != null | user.isActive()) {
// 危険
}このコードは、
user != nullが false の場合でもuser.isActive()が 必ず実行される
結果として、NullPointerException が発生します。
正しい書き方はこちらです。
if (user != null || user.isActive()) {
// 安全
}➡ 条件分岐では | を使わない
これは強く覚えておいてください。
4.5 | が本来使われる場面(ビットOR)
| は、ビット演算のための演算子です。
int READ = 1; // 0001
int WRITE = 2; // 0010
int permission = READ | WRITE; // 0011このように、
- フラグを組み合わせる
- 設定値をビットで管理する
といった場面で使われます。
4.6 初心者向け使い分けルール
迷ったときは、次のルールで判断してください。
- if文・条件分岐 →
|| - 数値のビット操作 →
| - booleanで
|を使う必要はほぼない - 短絡評価が欲しいなら必ず
||
次のセクションでは、
OR条件を複数組み合わせる書き方と、読みやすくするコツ
について解説します。
5. OR条件を複数組み合わせる書き方(括弧と読みやすさ)
実際のプログラムでは、OR条件が 2つだけ で終わることは少なく、
3つ以上の条件を組み合わせる場面が多くあります。
ここでは、正しい書き方と、可読性を落とさないための考え方を解説します。
5.1 OR条件をそのまま並べる基本形
OR条件は、|| を連続してつなぐことができます。
if (status.equals("ADMIN") || status.equals("OWNER") || status.equals("EDITOR")) {
// 権限あり
}意味はそのまま、
「ADMIN または OWNER または EDITOR なら権限あり」
です。
条件が少ないうちは、これで問題ありません。
5.2 条件が増えたときの問題点
OR条件が増えると、次のような問題が起きやすくなります。
- 行が長くなり、読みづらい
- 何を判定しているのか分かりにくい
- 修正時にミスが起きやすい
if (a || b || c || d || e) {
// 意図が分かりにくい
}こうした場合は、書き方を工夫することが重要です。
5.3 boolean変数に分解して読みやすくする
最も簡単で効果的なのが、意味のあるboolean変数に分解する方法です。
boolean isAdmin = status.equals("ADMIN");
boolean isOwner = status.equals("OWNER");
boolean isEditor = status.equals("EDITOR");
if (isAdmin || isOwner || isEditor) {
// 権限あり
}これだけで、
- コードの意図が一目で分かる
- 条件の追加・削除が簡単
- バグを生みにくい
という大きなメリットがあります。

5.4 AND(&&)とOR(||)を混ぜる場合の注意点
OR条件とAND条件を混在させる場合、必ず括弧を使うことをおすすめします。
// 推奨
if (isLogin && (isAdmin || isOwner)) {
// 処理
}括弧を付けない場合、意図しない評価順になることがあります。
// 非推奨(誤解を招く)
if (isLogin && isAdmin || isOwner) {
// 読み手に優しくない
}人が読んで即座に理解できない条件式は、将来の自分にとっても負債になります。
5.5 条件が複雑な場合はメソッド化する
条件がさらに複雑になる場合は、メソッドとして切り出すのが最も安全です。
if (isAllowedUser(user)) {
// 処理
}
boolean isAllowedUser(User user) {
return user != null && (user.isAdmin() || user.isOwner());
}こうすることで、
- if文がすっきりする
- テストしやすくなる
- ロジックの再利用ができる
というメリットがあります。
5.6 このセクションのまとめ
OR条件を複数使う場合は、次の点を意識してください。
- 条件が増えたら 分解する
- ANDとORを混ぜるときは 必ず括弧
- 複雑になったら メソッド化
6. 演算子の優先順位(ミスが起きやすいポイント)
Javaでは、演算子ごとに評価される順番(優先順位)が決まっています。
OR条件を扱うとき、この優先順位を正しく理解していないと、
「思った通りに動かない」バグを生みやすくなります。
6.1 && と || の優先順位
論理演算子の中での優先順位は、次の順です。
&&(AND)||(OR)
つまり、ANDのほうがORより先に評価されます。
boolean result = false || true && false;このコードは、次の順で評価されます。
true && false→ falsefalse || false→ false
結果は false になります。
6.2 括弧を付けた場合の評価順
括弧を付けると、その中が最優先で評価されます。
boolean result = (false || true) && false;評価順は、
false || true→ truetrue && false→ false
結果は同じ false ですが、評価の流れはまったく別です。
6.3 if文でよくある勘違い例
次のif文を見てください。
if (isLogin && isAdmin || isOwner) {
// 処理
}このコードは、Javaの優先順位ルールに従うと、
次のように解釈されます。
if ((isLogin && isAdmin) || isOwner) {
// 処理
}その結果、
- ログインしていなくても
isOwnerが true なら処理が実行される
という、意図しない挙動になる可能性があります。
6.4 意図を明確にする安全な書き方
意図が
「ログインしていて、かつ(管理者または所有者)」
であれば、必ず括弧を使います。
if (isLogin && (isAdmin || isOwner)) {
// 正しい
}この書き方なら、
- 読み手にも分かりやすい
- 優先順位を暗記する必要がない
- 将来の修正でも安全
というメリットがあります。
6.5 優先順位を暗記する必要はない
初心者がやりがちなミスは、
- 優先順位をすべて暗記しようとする
- 括弧を付けないことに慣れてしまう
ことです。
実務では、
「迷ったら必ず括弧」
これだけ守れば十分です。
6.6 このセクションのまとめ
このセクションの要点は次のとおりです。
&&は||より優先順位が高い- 括弧があれば、そちらが最優先
- 意図が伝わらない条件式は危険
- 可読性のためにも括弧を使う
7. よくある落とし穴(バグ例と対策)
ここまでで OR演算子の基本や仕組みは理解できたはずです。
このセクションでは、初心者が実際につまずきやすい典型的なバグと、その安全な回避方法を紹介します。
「知っていれば防げた」というケースばかりなので、ぜひ一度目を通しておいてください。
7.1 nullチェックの順番ミスによるエラー
最もよくあるのが、nullチェックの順番ミスです。
危険な例
if (user.isActive() || user == null) {
// 処理
}このコードでは、
userがnullの場合user.isActive()が先に評価される
結果として、NullPointerException が発生します。
正しい例(短絡評価を活かす)
if (user == null || user.isActive()) {
// 安全
}- 左側で
nullを判定 - true なら右側は評価されない
➡ 短絡評価を前提に、必ず安全な条件を左に置く
これはOR条件だけでなく、AND条件でも非常に重要な考え方です。
7.2 | を使ってしまい短絡評価が効かない
見た目が似ているため、うっかり | を使ってしまうケースもあります。
if (user != null | user.isActive()) {
// バグの原因
}この場合、
user != nullが false でもuser.isActive()は 必ず実行される
➡ user が null なら即エラーです。
条件分岐では必ず || を使う
これを徹底してください。
7.3 条件式に副作用のある処理を書く
条件式の中に、値を変更する処理を書くのも危険です。
if (isValid || count++) {
// 何かの処理
}isValidが true の場合count++は実行されない
「countは必ず増える」と思っていると、気付きにくいバグになります。
対策:条件と処理を分離する
if (isValid) {
count++;
}または、
count++;
if (isValid) {
// 処理
}➡ 条件式は「判定だけ」に使う
7.4 可読性の低いOR条件は将来のバグを生む
次のような条件式は、一見動いても危険です。
if (a || b && c || d && e) {
// 意図が分からない
}- 優先順位が直感的でない
- 修正時に事故が起きやすい
改善例
boolean condition1 = a || b;
boolean condition2 = c || d;
if (condition1 && condition2) {
// 分かりやすい
}7.5 このセクションのまとめ
OR条件で起きやすいミスは、ほぼ次の4つに集約されます。
- nullチェックの順番を間違える
|と||を取り違える- 条件式に副作用を書く
- 読みにくい条件式を放置する
これらを避けるだけで、
安全で読みやすいJavaコードに一気に近づきます。
8. 実務で使えるサンプル集(コピペして試せる)
ここでは、実際の開発現場でよく使われるOR条件の具体例を紹介します。
どれも初心者がそのままコピーして使える形にしているので、
「こういう場面ではこう書く」という感覚を身につけてください。
8.1 入力チェック(null または 空文字)
ユーザー入力や外部データを扱う場合、null と空文字の両方をチェックする場面は非常に多くあります。
if (text == null || text.isEmpty()) {
System.out.println("入力してください");
}text == nullが true の場合text.isEmpty()は評価されない
➡ 短絡評価を活かした安全な書き方です。
8.2 権限チェック(複数ロールを許可する)
管理者や特定の権限を持つユーザーだけに処理を許可したい場合です。
if (isAdmin || isOwner) {
// 許可されたユーザーのみ実行
}条件が増えた場合でも、ORで自然に表現できます。
if (isAdmin || isOwner || isEditor) {
// 権限あり
}8.3 状態チェック(どれか1つでもNGなら処理しない)
OR条件は、「どれか1つでも問題があれば処理を止める」という書き方にも向いています。
if (isTimeout || isError || isDisconnected) {
return;
}- 可読性が高い
- 早期リターンで処理が整理される
➡ 実務でよく使われるパターンです。
8.4 例外回避を意識した条件式
オブジェクトの状態に応じて、安全にメソッドを呼び出したい場合です。
if (user == null || user.isGuest()) {
showGuestPage();
}- nullチェックを左側に置く
- 右側は安全な場合のみ評価される
OR条件と短絡評価の定番コンビネーションです。
8.5 ビットフラグを使ったOR(| を使う場面)
論理ORではなく、ビットORが必要な場面もあります。
int READ = 1; // 0001
int WRITE = 2; // 0010
int EXEC = 4; // 0100
int permission = READ | WRITE;このように、
- 設定値
- 権限
- 状態フラグ
をまとめて管理したい場合に、| が使われます。
8.6 サンプル集まとめ
実務でOR条件を書くときは、次の考え方が役立ちます。
- 入力チェックは nullを左に
- 複数条件は ORでまとめる
- 処理停止は 早期リターン
- 条件式は 安全・単純・副作用なし
9. まとめ(使い分け早見表つき)
ここまでで、Javaにおける OR(または)条件 の考え方と使い方を一通り解説してきました。
最後に、実務で迷わないための要点を整理します。
9.1 || と | の使い分け早見表
| 演算子 | 主な用途 | 短絡評価 | 主な使用場面 |
|---|---|---|---|
| ` | ` | 論理OR | |
| ` | ` | ビットOR | なし |
判断基準はとてもシンプルです。
- 条件分岐 →
|| - ビット操作 →
|
booleanの条件式で | を使う理由は、ほぼありません。
9.2 OR条件を書くときの基本ルール
OR条件で安全なコードを書くために、次のルールを意識してください。
- nullチェックは必ず左側
- 短絡評価を前提に書く
- 副作用のある処理を条件式に入れない
- 読みにくくなったら分解・メソッド化
- ANDとORを混ぜるときは必ず括弧
これだけ守れば、初心者でも 事故の少ないJavaコード が書けるようになります。
9.3 初心者がまず覚えるべき結論
この記事の結論を一言でまとめると、次のとおりです。
JavaのOR条件は、
||を使い、短絡評価を理解したうえで、安全な順序で書く。
細かい仕様をすべて暗記する必要はありません。
「なぜこの順序で書くのか」 が分かっていれば、自然と正しいコードになります。
10. FAQ(よくある質問)
10.1 Javaで OR は or と書けますか?
いいえ、書けません。
Javaでは、OR条件は 必ず記号で表現します。
- 論理OR:
|| - ビットOR:
|
or というキーワードは Java には存在しません。
10.2 || と | はどちらを使えばいいですか?
if文や条件分岐では必ず || を使ってください。
| はビット演算用であり、
条件分岐に使うと 短絡評価が効かず、バグの原因になります。
10.3 || の右側が実行されないことがあるのはなぜですか?
|| は 短絡評価(ショートサーキット) を行うためです。
- 左側が
trueの時点で結果が確定 - 右側は評価されない
これはJavaの仕様であり、正しい動作です。
10.4 a && b || c はどう評価されますか?
&& のほうが || より優先順位が高いため、
次のように評価されます。
(a && b) || c意図が分かりにくい場合は、必ず括弧を付けてください。
10.5 booleanで | を使うのはアリですか?
文法的には可能ですが、おすすめしません。
- 短絡評価が効かない
- 可読性が下がる
- バグを生みやすい
特別な理由がない限り、boolean条件では || を使いましょう。
10.6 ビットOR(|)はどんな場面で使いますか?
主に次のような場面です。
- 権限フラグの管理
- 設定値の組み合わせ
- 状態をビットで表現したい場合
これらは 条件分岐とは別の用途 だと理解しておくと混乱しません。

