패키지란 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다.
클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다.
-하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다
-모든 클래스는 반드시 하나의 패키지에 속해야 한다.
-패키지는 점을 구분자로하여 계층구조로 구성할 수 있다.
-패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다.
패키지명은 클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙으로 하고 있다.
소스파일에 자신이 속할 패키지를 지정하지 않은 클래스는 자동적으로 '이름 없는 패키지'에 속하게 된다. 결국 패키지를 지정하지 않은 모든 클래스들은 같은 패키지에 속하는 셈이 된다.
클래스의 코드를 작성하기 전에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에 사용되는 클래스이름에서 패키지명은 생략할 수 있다.
모든 소스파일(.java)에서 import문은 package문 다음에, 그리고 클래스 선언문 이전에 위치해야 한다. import문은 package문과 달리 한 소스파일에 여러 번 선언할 수 있다.
일반적으로 소스파일(*.java)의 구성은 다음의 순서로 되어있다.
1.package문
2.immport문
3.클래스 선언
한 가지 더 알아두어야 할 것은 import 문에서 클래스의 이름 대신 '*'을 사용하는 것이 하위 패키지의 클래스까지 포함하는 것은 아니라는 것이다.
import java.util.*;
import java.text.*;
그래서 위의 두 문장 대신 다음과 같이 할 수는 없다.
import java.*;