- 1 1. What Is “OR” in Java?
- 2 2. The Logical OR Operator || Basics (Most Common in if Statements)
- 3 3. Important: || Uses Short-Circuit Evaluation
- 4 4. The Difference Between || and | (The Most Common Point of Confusion)
- 4.1 4.1 Understand the Conclusion First: They Have Different Use Cases
- 4.2 4.2 The Difference When Used with booleans
- 4.3 4.3 The Key Difference: Short-Circuit vs No Short-Circuit
- 4.4 4.4 Why Using | in Conditions Is Dangerous
- 4.5 4.5 Where | Is Actually Used (Bitwise OR)
- 4.6 4.6 Simple Rules for Beginners
- 5 5. Combining Multiple OR Conditions (Parentheses and Readability)
- 6 6. Operator Precedence (A Common Source of Bugs)
- 7 7. Common Pitfalls (Typical Bugs and How to Avoid Them)
- 8 8. Practical Examples for Real-World Use (Copy & Try)
- 9 9. Summary (With a Quick Reference Table)
- 10 10. FAQ (Frequently Asked Questions)
1. What Is “OR” in Java?
In Java, OR is mainly used in conditional branching (such as if statements) to make a decision like “OK if either one is true.”
It’s also a common stumbling point for beginners, so it’s important to correctly understand how it differs from AND and what the symbols mean.
1.1 Common Situations Where OR Conditions Are Needed
OR conditions appear very frequently in both real-world development and learning. For example:
- When you want to run logic if either condition is met
- If it’s a holiday or a weekend, you want to branch the process
- When you want to check multiple input conditions at once
- If the value is
nullor an empty string, you want to treat it as an error
- If the value is
- When you want to allow an action for multiple roles or states
- Allow the operation if the user is an admin or the owner
In everyday language, it’s like saying:
“A or B is OK.”
It’s essentially translating that decision directly into code.
1.2 The Basic Way to Write OR in Java
In Java, logical OR is written using the operator || (two vertical bars).
if (conditionA || conditionB) {
// Runs when either conditionA or conditionB is true
}This code means:
conditionAistrueorconditionBistrue
If either one is true, the code inside the if block will execute.
1.3 “OR” Is a Decision Style That Maps Well to Natural Language
Because OR conditions closely match how we reason in natural language, a good shortcut at first is to “translate it into a sentence.”
if (isHoliday || isWeekend) {
System.out.println("今日は休みです");
}In English, this means:
“If it’s a holiday or weekend, print ‘Today is a day off.’”
As a beginner, instead of:
- memorizing the symbols as-is
- trying to brute-force it as grammar
it’s often faster (and reduces mistakes) to first restate it in words.
1.4 What This Article Will Explain Next
Many people who search for “java or” are confused not only about what OR means, but also about:
- What’s the difference between
||and|? - Why does the “right side not run” sometimes?
- What should you watch out for when using it with AND (
&&)? - How do you write it safely in real-world code?
In this article, we’ll address these questions in the following order:
- Basics → Mechanism → Pitfalls → Practical usage
with clear, beginner-friendly explanations.
2. The Logical OR Operator || Basics (Most Common in if Statements)
When writing OR conditions in Java, the most basic and most frequently used operator is the logical OR operator ||.
If you searched for “java or,” it’s safe to say || is the first thing you should understand.
2.1 Meaning and Role of ||
The logical OR operator || evaluates to true if either the left or right condition is true.
ConditionA || ConditionBThis expression is evaluated as follows:
| ConditionA | ConditionB | Result |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
In other words:
It’s false only when both are false
Otherwise it’s true
It’s a very simple rule.
2.2 Basic Usage in an if Statement
In real code, || is almost always used inside an if condition.
int age = 20;
if (age >= 18 || age == 17) {
System.out.println("入場可能です");
}This means:
“Entry is allowed if the age is 18 or older or the age is 17.”
If either condition is satisfied, the code inside the if block will run.
2.3 || Connects boolean Expressions
Both sides of || must be expressions that evaluate to a boolean value (true/false).
Correct example:
if (score >= 80 || score == 100) {
// OK
}Incorrect example:
if (score || 100) {
// Compile error
}You can’t OR plain numbers or strings directly.
Instead, you combine OR with:
- comparison operators (
==,>=,<, etc.) - boolean variables
- methods that return boolean
to form valid conditions.
2.4 When OR Makes Code More Readable
Using || lets you group multiple checks into a single decision.
if (status.equals("ADMIN") || status.equals("OWNER")) {
System.out.println("操作が許可されています");
}This clearly expresses:
“Allow the operation if the user is an admin or an owner.”
If you avoid OR and write it out separately, it becomes verbose:
if (status.equals("ADMIN")) {
System.out.println("操作が許可されています");
} else if (status.equals("OWNER")) {
System.out.println("操作が許可されています");
}Using OR provides benefits such as:
- less code
- intent is obvious at a glance
- easier to modify or extend
and so on.
2.5 Key Points Beginners Should Learn First
At this stage, it’s enough to remember these three points:
||means “OK if either side is true”- It’s typically used in
ifconditions - Both sides must be boolean expressions
3. Important: || Uses Short-Circuit Evaluation
The most important characteristic of the logical OR operator || is
short-circuit evaluation.
Whether you understand this or not can make a big difference in
whether you write safe code or introduce bugs.
3.1 What Is Short-Circuit Evaluation?
Short-circuit evaluation means: if the result is already determined by the left side, the right side is not evaluated.
For OR conditions, the rule is:
- If the left side is
true→ the whole expression is guaranteed to be true - Therefore, the right side will not run
if (conditionA || conditionB) {
// process
}In this case:
- If
conditionAistrue
→conditionBis not evaluated
3.2 A Concrete Example of Short-Circuit Evaluation
Take a look at the following code:
boolean result = true || expensiveCheck();In this case:
- The left side is
true - Because it’s an OR condition, the result is already determined
So the method expensiveCheck() is not called.
This is not an error—it’s correct behavior according to Java’s specification.
3.3 Why Is Short-Circuit Evaluation Important?
Short-circuit evaluation has major practical benefits.
1. It Avoids Unnecessary Work
if (isAdmin || checkDatabase()) {
// process
}- If the user is an admin, there’s no need to call
checkDatabase() - Heavy operations such as DB access can be skipped automatically
➡ Better performance
2. It Prevents Exceptions (Errors)
Short-circuit evaluation is also very often used intentionally to avoid errors.
if (user == null || user.isGuest()) {
// guest logic
}In this code:
- If
user == nullistrue user.isGuest()is not evaluated
So a NullPointerException will not occur.
Here is a dangerous pattern beginners often write:
if (user.isGuest() || user == null) {
// Dangerous: may cause NullPointerException
}➡ When relying on short-circuit evaluation, always put the null check on the left
This is essentially common practice in real-world code.
3.4 A Common Pitfall with Short-Circuit Evaluation
Short-circuiting is useful, but if you use it without realizing it, it can also cause confusion.
Don’t Put “Side-Effect” Operations on the Right Side
if (flag || count++) {
// some process
}In this case:
- If
flagistrue count++is not executed
This can easily lead to bugs where “a process you assumed always runs” sometimes doesn’t run.
3.5 Beginner Summary (Short-Circuit Evaluation)
Key takeaways from this section:
||means if the left side is true, the right side is not evaluated- This is not a bug—it’s Java’s intended behavior
- Use it to avoid null errors and skip expensive work
- Do not put side-effect operations inside conditions
4. The Difference Between || and | (The Most Common Point of Confusion)
One of the biggest reasons people get confused when searching “java or” is that|| and | look similar.
But the conclusion is simple: these two are completely different in purpose and behavior.
4.1 Understand the Conclusion First: They Have Different Use Cases
Let’s summarize the difference in one line:
||: logical OR operator (for branching conditions, with short-circuit evaluation)|: bitwise OR operator (for bit operations on numbers, no short-circuit evaluation)
As a beginner, just remember this rule:
In if statements, basically use only ||.
You’ll almost never get stuck if you follow that.
4.2 The Difference When Used with booleans
In fact, | can also be used with booleans.
This is exactly what makes it confusing.
boolean a = true;
boolean b = false;
System.out.println(a || b); // true
System.out.println(a | b); // trueIf you only look at the result, both become true.
However, the evaluation behavior is completely different.
4.3 The Key Difference: Short-Circuit vs No Short-Circuit
|| (with short-circuit evaluation)
if (a || check()) {
// process
}ais true- The result is determined
check()is not executed
| (no short-circuit evaluation)
if (a | check()) {
// process
}- Even if
ais true check()is always executed
This is the decisive difference.
4.4 Why Using | in Conditions Is Dangerous
Here’s a common beginner mistake:
if (user != null | user.isActive()) {
// dangerous
}With this code:
- Even if
user != nullis false user.isActive()is still executed
As a result, a NullPointerException occurs.
The correct version is:
if (user != null || user.isActive()) {
// safe
}➡ Do not use | for conditional branching
Please memorize this strongly.
4.5 Where | Is Actually Used (Bitwise OR)
| is a bitwise operator used for bit manipulation.
int READ = 1; // 0001
int WRITE = 2; // 0010
int permission = READ | WRITE; // 0011This is used in scenarios such as:
- combining flags
- managing settings using bits
and similar patterns.
4.6 Simple Rules for Beginners
When in doubt, use these rules:
ifstatements / conditions →||- bit operations on numbers →
| - There’s almost no need to use
|with booleans - If you want short-circuiting, always use
||
In the next section, we’ll explain
how to combine multiple OR conditions and keep your code readable.
5. Combining Multiple OR Conditions (Parentheses and Readability)
In real-world programs, OR conditions rarely stop at just two checks.
Much more often, you need to combine three or more conditions.
This section explains the correct syntax and how to keep your code readable as conditions grow.
5.1 The Basic Pattern: Chaining OR Conditions
You can chain OR conditions using || repeatedly.
if (status.equals("ADMIN") || status.equals("OWNER") || status.equals("EDITOR")) {
// permission granted
}This literally means:
“If the status is ADMIN or OWNER or EDITOR, permission is granted.”
When the number of conditions is small, this is perfectly fine.
5.2 Problems When Conditions Increase
As OR conditions increase, the following problems often appear:
- Lines become long and hard to read
- The intent of the condition becomes unclear
- Mistakes become more likely during maintenance
if (a || b || c || d || e) {
// unclear intent
}In these cases, you should improve the structure rather than keep extending the condition.
5.3 Improve Readability by Extracting boolean Variables
The simplest and most effective technique is to extract meaningful boolean variables.
boolean isAdmin = status.equals("ADMIN");
boolean isOwner = status.equals("OWNER");
boolean isEditor = status.equals("EDITOR");
if (isAdmin || isOwner || isEditor) {
// permission granted
}This immediately provides major benefits:
- The intent of the code is obvious at a glance
- Conditions are easy to add or remove
- Bugs are less likely to occur

5.4 Mixing AND (&&) and OR (||): Use Parentheses
When mixing OR and AND conditions, always use parentheses.
// Recommended
if (isLogin && (isAdmin || isOwner)) {
// process
}Without parentheses, the evaluation order may not match your intent.
// Not recommended (confusing)
if (isLogin && isAdmin || isOwner) {
// hard to understand
}Any condition that isn’t immediately clear to the reader becomes technical debt for your future self.
5.5 When Conditions Get Complex, Extract a Method
If conditions grow even more complex, the safest approach is to extract them into a method.
if (isAllowedUser(user)) {
// process
}
boolean isAllowedUser(User user) {
return user != null && (user.isAdmin() || user.isOwner());
}This provides several advantages:
- The
ifstatement stays clean - The logic becomes easier to test
- The logic can be reused
5.6 Section Summary
When using multiple OR conditions, keep these rules in mind:
- Break conditions down as they grow
- Always use parentheses when mixing AND and OR
- Extract methods when logic becomes complex
6. Operator Precedence (A Common Source of Bugs)
In Java, each operator has a defined precedence (evaluation order).
If you don’t understand this when using OR conditions,
you may introduce bugs where the code doesn’t behave as expected.
6.1 Precedence of && and ||
Among logical operators, the precedence order is:
&&(AND)||(OR)
This means AND is evaluated before OR.
boolean result = false || true && false;This expression is evaluated in the following order:
true && false→ falsefalse || false→ false
The final result is false.
6.2 Evaluation Order with Parentheses
When you add parentheses, the enclosed expression is evaluated first.
boolean result = (false || true) && false;The evaluation order becomes:
false || true→ truetrue && false→ false
The result is still false, but the evaluation flow is completely different.
6.3 A Common Misunderstanding in if Statements
Consider the following if statement:
if (isLogin && isAdmin || isOwner) {
// process
}According to Java’s precedence rules, this is interpreted as:
if ((isLogin && isAdmin) || isOwner) {
// process
}As a result:
- The user may not be logged in
- If
isOwneris true, the process still runs
This can lead to unintended behavior.
6.4 A Safe Way to Make Your Intent Clear
If your intent is:
“The user is logged in, and (is an admin or an owner)”
then always use parentheses:
if (isLogin && (isAdmin || isOwner)) {
// correct
}This style:
- Is easy for readers to understand
- Does not require memorizing precedence rules
- Is safer for future maintenance
6.5 You Don’t Need to Memorize Precedence Rules
Common beginner mistakes include:
- Trying to memorize all operator precedence rules
- Getting used to writing conditions without parentheses
In real-world development, just follow this rule:
“When in doubt, always use parentheses.”
That alone is enough.
6.6 Section Summary
Key points from this section:
&&has higher precedence than||- Parentheses override precedence
- Unclear conditions are dangerous
- Use parentheses for readability and safety
7. Common Pitfalls (Typical Bugs and How to Avoid Them)
By now, you should understand the basics and mechanics of the OR operator.
This section introduces typical bugs that beginners often encounter and safe ways to avoid them.
Most of these are cases where you’ll think, “If I had known this, I could have avoided it.”
Make sure to review them at least once.
7.1 Errors Caused by Incorrect null-Check Order
The most common mistake is checking for null in the wrong order.
Dangerous Example
if (user.isActive() || user == null) {
// process
}In this code:
- If
userisnull user.isActive()is evaluated first
As a result, a NullPointerException occurs.
Correct Example (Using Short-Circuit Evaluation)
if (user == null || user.isActive()) {
// safe
}- The
nullcheck is on the left - If true, the right side is not evaluated
➡ When relying on short-circuit evaluation, always put safe conditions on the left
This principle is extremely important not only for OR conditions, but also for AND conditions.
7.2 Using | by Mistake (Short-Circuit Does Not Apply)
Because they look similar, it’s easy to accidentally use | instead of ||.
if (user != null | user.isActive()) {
// source of bugs
}In this case:
- Even if
user != nullis false user.isActive()is always executed
➡ If user is null, an error occurs immediately.
Always use || in conditional branching.
Make this a strict habit.
7.3 Writing Side-Effect Operations Inside Conditions
It’s also dangerous to write state-changing operations inside conditions.
if (isValid || count++) {
// some process
}- If
isValidis true count++is not executed
If you assume “count always increments,” this becomes a subtle and hard-to-find bug.
Solution: Separate Conditions from Actions
if (isValid) {
count++;
}Or:
count++;
if (isValid) {
// process
}➡ Use conditions only for decisions
7.4 Poorly Readable OR Conditions Lead to Future Bugs
The following condition may work, but it’s dangerous:
if (a || b && c || d && e) {
// unclear intent
}- The precedence is not intuitive
- It’s easy to break during maintenance
Improved Example
boolean condition1 = a || b;
boolean condition2 = c || d;
if (condition1 && condition2) {
// much clearer
}7.5 Section Summary
Most OR-related bugs fall into these four categories:
- Incorrect null-check order
- Mixing up
|and|| - Writing side effects inside conditions
- Leaving unreadable conditions as-is
Avoiding these alone will get you much closer to
safe, readable Java code.
8. Practical Examples for Real-World Use (Copy & Try)
This section introduces practical OR-condition examples commonly used in real development.
Each example is written so beginners can copy and try it directly.
8.1 Input Validation (null or Empty String)
When handling user input or external data, checking both null and empty strings is extremely common.
if (text == null || text.isEmpty()) {
System.out.println("Please enter a value");
}- If
text == nullis true text.isEmpty()is not evaluated
➡ A safe pattern using short-circuit evaluation.
8.2 Permission Checks (Allow Multiple Roles)
Use OR when allowing an action for multiple roles.
if (isAdmin || isOwner) {
// allowed users only
}You can naturally extend this as roles increase:
if (isAdmin || isOwner || isEditor) {
// permission granted
}8.3 State Checks (Abort If Any Condition Is Bad)
OR conditions are also ideal for cases where
if any single state is bad, processing should stop.
if (isTimeout || isError || isDisconnected) {
return;
}- High readability
- Early return keeps logic clean
➡ A very common real-world pattern.
8.4 Conditions Designed to Avoid Exceptions
Use OR to safely call methods based on object state.
if (user == null || user.isGuest()) {
showGuestPage();
}- Put the null check on the left
- The right side runs only when safe
This is a classic combination of OR and short-circuit evaluation.
8.5 OR with Bit Flags (Where | Is Appropriate)
There are cases where you need bitwise OR, not logical OR.
int READ = 1; // 0001
int WRITE = 2; // 0010
int EXEC = 4; // 0100
int permission = READ | WRITE;This pattern is used to combine:
- configuration flags
- permissions
- state flags
In these cases, | is the correct operator.
8.6 Section Summary
When writing OR conditions in real projects, keep these ideas in mind:
- Put null checks on the left
- Group related conditions with OR
- Use early returns to simplify logic
- Keep conditions safe, simple, and side-effect free
9. Summary (With a Quick Reference Table)
So far, we’ve covered the concept and usage of OR conditions in Java in detail.
To wrap up, let’s organize the key points you need in real-world development.
9.1 Quick Reference: || vs |
| Operator | Primary Purpose | Short-Circuit | Typical Usage |
|---|---|---|---|
|| | Logical OR | Yes | Conditional branching (if) |
| | Bitwise OR | No | Bit flags, numeric bit operations |
The decision rule is very simple:
- Conditional branching →
|| - Bit manipulation →
|
There is almost never a good reason to use | in boolean conditions.
9.2 Fundamental Rules for Writing OR Conditions
To write safe OR conditions in Java, keep the following rules in mind:
- Always put null checks on the left
- Write code assuming short-circuit evaluation
- Never put side effects inside conditions
- Break down or extract methods when conditions get complex
- Always use parentheses when mixing AND and OR
If you follow just these rules, even beginners can write safe, low-risk Java code.
9.3 The One-Sentence Conclusion Beginners Should Remember
In one sentence, the conclusion of this article is:
In Java, use
||for OR conditions, understand short-circuit evaluation, and write conditions in a safe order.
You don’t need to memorize every rule.
If you understand why conditions are written in a certain order, correct code will follow naturally.
10. FAQ (Frequently Asked Questions)
10.1 Can I write OR as or in Java?
No, you can’t.
In Java, OR conditions are always written using symbols.
- Logical OR:
|| - Bitwise OR:
|
The keyword or does not exist in Java.
10.2 Which should I use: || or |?
Always use || in if statements and conditional branching.
| is for bitwise operations.
Using it in conditions disables short-circuit evaluation and often causes bugs.
10.3 Why is the right side of || sometimes not executed?
Because || uses short-circuit evaluation.
- If the left side is
true, the result is already determined - The right side is not evaluated
This is correct behavior according to Java’s specification.
10.4 How is a && b || c evaluated?
Because && has higher precedence than ||, it is evaluated as:
(a && b) || cIf the intent isn’t obvious, always add parentheses.
10.5 Is it OK to use | with booleans?
It is syntactically valid, but strongly discouraged.
- No short-circuit evaluation
- Lower readability
- Much easier to introduce bugs
Unless you have a very specific reason, always use || for boolean logic.
10.6 When should I use bitwise OR (|)?
Typical use cases include:
- Managing permission flags
- Combining configuration values
- Representing state using bits
These are completely different use cases from conditional branching.

