--- id: java-packages title: "Java Packages" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["import keyword", "자바 패키지"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.88 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["java", "programming", "w3schools", "oop", "packages", "import"] raw_sources: ["https://www.w3schools.com/java/java_packages.asp"] applied_in: [] github_commit: "" --- # [[Java Packages]] ## 🎯 한 줄 통찰 (One-line insight) Building your own package requires a two-step compile that most beginners miss — first `javac MyPackageClass.java`, then `javac -d . MyPackageClass.java` (the `-d` flag actually creates the package's folder structure); skipping the second step means the package folder never materializes. [S1] ## 🧠 핵심 개념 (Core concepts) - **Package** — groups related classes, like a folder; avoids name conflicts, improves maintainability. [S1] - **Built-in packages** — the Java API, a library of prewritten classes (e.g. `java.util`). [S1] - **User-defined packages** — created via the `package` keyword, mapped to actual filesystem directories. [S1] - **`import`** — `import package.name.Class;` for a single class, `import package.name.*;` for the whole package. [S1] - **`-d` compiler flag** — specifies the destination folder, forcing the compiler to create the package directory structure. [S1] - **Lowercase package naming convention** — avoids conflicts with class names (which start uppercase). [S1] ## 📖 세부 내용 (Details) - Import a single class: `import java.util.Scanner; ... Scanner myObj = new Scanner(System.in); String userName = myObj.nextLine();`. [S1] - Import whole package: `import java.util.*;`. [S1] - User-defined package: `package mypack; class MyPackageClass { public static void main(String[] args) { System.out.println("This is my package!"); } }`. [S1] - Compile + run: `javac MyPackageClass.java` then `javac -d . MyPackageClass.java`, then run via `java mypack.MyPackageClass`. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스에서 모순되는 정보는 발견되지 않음. ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다 — Scanner 클래스를 이용한 사용자 입력 처리가 java.util 패키지 활용의 대표 실전 사례다. [S1] ## 💻 코드 패턴 (Code patterns) Using Scanner from java.util for user input (Java): ```java import java.util.Scanner; class Main { public static void main(String[] args) { Scanner myObj = new Scanner(System.in); System.out.println("Enter username"); String userName = myObj.nextLine(); System.out.println("Username is: " + userName); } } ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.88 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[Java Tutorial]] - **관련 개념:** [[Java Encapsulation]], [[Java Inheritance]], [[Java User Input]] - **참조 맥락:** 클래스 그룹화 및 import 문법 — 사용자 입력(Scanner)/상속 챕터로 이어짐. ## 📚 출처 (Sources) - [S1] W3Schools — Java Packages & API — https://www.w3schools.com/java/java_packages.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "Java Packages & API" page (Astra wiki-curation, P-Reinforce v3.1 format).