숏컷 코드
package com.example.app;
import java.util.List;
public class Main {
public static void main(String[] args) {
System.out.println("Hello, Java");
}
}문법
어떤 파일 구조 요소가 있나
| 요소 | 역할 |
|---|---|
package | 이름공간과 폴더 경계 |
import | 다른 패키지 타입을 짧게 사용 |
main 메서드 | 실행 시작점 |
| 완전 수식 이름 | 이름 충돌 회피 |
package: 이름공간과 경계
package는 클래스를 논리적으로 묶는 이름공간입니다. 폴더 구조와 일치해야 하며, 같은 이름의 클래스가 다른 패키지에 공존할 수 있게 해 줍니다. 예를 들어 com.example.user와 com.example.order 패키지에 각각 Service라는 클래스가 있어도 충돌하지 않습니다.
// 파일 위치: src/com/example/user/Service.java
package com.example.user;
public class Service {
// ...
}import: 다른 패키지 타입 참조
import는 다른 패키지의 타입을 짧은 이름으로 쓸 수 있게 해 줍니다. import 없이도 완전 수식 이름으로 쓸 수 있지만 코드가 길어집니다. 같은 이름의 타입이 여럿 있을 때는 완전 수식 이름을 직접 쓰는 편이 더 명확합니다.
import java.util.List;
import java.util.ArrayList;
// import 없이 완전 수식 이름을 직접 써도 됩니다
java.util.List<String> list = new java.util.ArrayList<>();main 메서드: 프로그램 시작점
public static void main(String[] args)는 Java 애플리케이션의 진입점입니다. java 런처가 이 메서드를 찾아 프로그램 실행을 시작합니다. 이 메서드 시그니처를 그대로 외우기보다, "실행 가능한 클래스의 약속된 시작점"이라는 역할로 이해하면 됩니다.
체크포인트
| 상황 | 적합한 선택 |
|---|---|
| 관련 클래스를 논리적으로 묶기 | package com.example.domain |
| 다른 패키지 타입을 짧게 쓰기 | import java.util.List |
| 프로그램 시작점 정의 | public static void main(String[] args) |
| 같은 이름 타입이 두 패키지에 있을 때 | 완전 수식 이름 직접 사용 |
주의할 점
package 선언을 생략하거나 폴더 구조와 다르게 두면 컴파일 오류가 납니다.
// ❌ 파일은 src/com/example/Main.java인데 package 없음
public class Main { ... }
// — 다른 패키지에서 참조 시 충돌·오류 발생
// ✅ 파일 위치와 package 선언이 일치해야 함
// 파일 위치: src/com/example/Main.java
package com.example;
public class Main { ... }참고 링크
3 sources