패키지(package)
패키지란, 클래스의 묶음이다.
클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다.
- 하나의 소스파일에는 첫번째 문장으로 단 한 번의 패키지 선언만을 허용한다.
- 모든 클래스는 반드시 하나의 패키지에 속해야한다.
- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.
- 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다.
패키지의 선언
package 패키지명;
소스파일의 맨 위에 적어준다.
패키지명은 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해 소문자로 하는 것을 원칙으로 한다. 모든 클래스는 반드시 하나의 패키지에 포함되어야한다.
package object_oriented_programming2;
public class PackageTest {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
import문
import문은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 이클립스 단축키는 'ztrl+shift+o'를 누르면 자동으로 import가 된다.
import문의 선언
package문
import문
클래스 선언
대부분의 소스파일(.java)의 구성을 다음과 같다.
import 패키지명.클래스명;
또는
import 패키지명.*;
'*'을 사용시 해당 패키지에서 일치하는 클래스 이름을 찾아야 하는 수고를 더 해야 할 것이다. 단지 그 뿐이라 실행 시 성능상의 차이는 전혀 없다.
package object_oriented_programming2;
import java.util.Date;
import java.text.SimpleDateFormat;
public class ImportTest {
public static void main(String[] args) {
Date today = new Date();
SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat time = new SimpleDateFormat("hh:mm:ss a");
System.out.println("오늘 날짜는 "+date.format(today));
System.out.println("현재 시간은 "+time.format(today));
}
}
//결과
오늘 날짜는 2021/08/19
현재 시간은 09:43:33 오전
static import문
import문을 사용하면 클래스의 패키지명을 생략할 수 있는 것과 같이 static import문을 사용하면 static멤버를 호출할 때 클래스 이름을 생략할 수 있다.
package object_oriented_programming2;
import static java.lang.System.out;
import static java.lang.Math.*;
public class StaticImportEx1 {
public static void main(String[] args) {
out.println(random());
out.println("Math.PI :"+PI);
}
}
//결과
0.9371159459818516
Math.PI :3.141592653589793
출처 : JAVA의 정석 - (남궁성지음)