--- id: java-if-else title: "Java If Else" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["if statement", "자바 조건문"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.9 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["java", "programming", "w3schools", "conditions", "if"] raw_sources: ["https://www.w3schools.com/java/java_conditions.asp"] applied_in: [] github_commit: "" --- # [[Java If Else]] ## 🎯 한 줄 통찰 (One-line insight) Omitting curly braces after `if` is legal Java but dangerous — only the single next line belongs to the condition, so any subsequent line silently runs unconditionally, which is why the source explicitly recommends always using braces even for one-line bodies. [S1] ## 🧠 핵심 개념 (Core concepts) - **`if (condition) { ... }`** — executes a block only when the condition evaluates to true. [S1] - **Condition must be boolean** — either a boolean expression (`x > y`) or a boolean variable (`isLightOn`). [S1] - **Case sensitivity** — `if` must be lowercase; `If`/`IF` causes a compile error. [S1] - **Boolean variable shorthand** — `if (isLightOn)` is equivalent to `if (isLightOn == true)` but shorter. [S1] - **Braceless if** — a single-statement body can omit `{ }`, but only the immediately following line is conditional. [S1] ## 🧩 추출된 패턴 (Extracted patterns) - **Braceless-if trap** — `if (x > y) System.out.println("a"); System.out.println("b");` runs `println("b")` unconditionally even though it looks indented under the if — the source calls this a "Potential Problem" and recommends ALWAYS using braces to prevent subtle bugs. [S1] ## 📖 세부 내용 (Details) - Basic condition: `if (20 > 18) { System.out.println("20 is greater than 18"); }`. [S1] - Variable comparison: `int x = 20; int y = 18; if (x > y) { System.out.println("x is greater than y"); }`. [S1] - Equality check: `if (x == y) { System.out.println("x is equal to y"); }`. [S1] - Boolean variable directly: `boolean isLightOn = true; if (isLightOn) { System.out.println("The light is on."); }`. [S1] - Braceless (risky): `if (20 > 18) System.out.println("20 is greater than 18");`. [S1] - Safe pattern: always wrap in `{ }`, even multi-statement blocks. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) - **소스가 직접 경고하는 함정**: 중괄호 생략 시 첫 줄만 조건에 속하고 이후 줄은 무조건 실행된다는 점. [S1] ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다 — else/else if/switch로 이어지는 조건문 체계의 출발점이다. [S1] ## 💻 코드 패턴 (Code patterns) Safe if with braces (Java): ```java int x = 20; int y = 18; if (x > y) { System.out.println("x is greater than y"); System.out.println("Both lines are part of the if"); } System.out.println("I am outside if, not part of if!"); ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[Java Tutorial]] - **관련 개념:** [[Java Booleans]], [[Java Else]], [[Java Else If]], [[Java Switch]] - **참조 맥락:** 조건문 체계의 시작점 — else, else if, switch로 이어진다. ## 📚 출처 (Sources) - [S1] W3Schools — Java If ... Else — https://www.w3schools.com/java/java_conditions.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "Java Conditions and If Statements" page (Astra wiki-curation, P-Reinforce v3.1 format).