자바의 정석3-3 패키지와 import문

자바의 정석3-3 패키지와 import문

패키지 (package)

- 서로 관련된 클래스의 묶음. 이름이 같은 클래스라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다.

- 클래스의 실제 이름(full name 예) String)은 패키지를 포함(java.lang.String)

-> Java 패키지(폴더) 안에 -> lang 패키지(하위 폴더) 안에 -> String 클래스 파일

패키지의 선언

- 패키지는 소스파일의 첫 번째 문장으로 단 한번 선언(파일 맨 위에)

- 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다.

- 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해 소문자로!

- 이름없는 패키지(unnamed): 패키지 선언이 없는 클래스들이 속하게 되는 패키지 (이클립스에선 default package)

클래스 패스(classpath)

- 클래스 파일(*.class)의 위치를 알려주는 경로(path)

- 환경변수(OS에서 관리) classpath로 관리하며, 경로간의 구분자는 ‘;’를 사용

- classpath(환경변수)에 패키지의 루트를 등록해줘야 함

import 문

- 클래스를 사용할 때 패키지 이름을 생략할 수 있음

- 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것

- 컴파일 시 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아낸 다음 모든 클래스 이름 앞에 패키지 명을 붙여줌(이클립스 자동 단축키 ctrl + shift + O)

class ImportTest { java.util.Date today = new java.util.Date(); //원래 기존에 해야하는 방식 } import java.util.Date; class ImportTest { Date today = new Date(); //패키지 이름 생략 가능! } <원래 기본 형식> public static void main(java.lang.String[] args) { java.lang.System.out.println("Hello"); } -> java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다.(String, Objcet, System, Thread…)

import문의 선언

- import문을 선언하는 방법: import 패키지명.클래스명; 또는 import 패키지명.*; (이클립스 자동 단축키 ctrl+shift+O)

- import문은 패키지문과 클래스선언 사이에 선언한다.

- impot문은 컴파일 시에 처리되므로 프로그램의 성능에 영향 없음

-> 오른쪽 코드의 의미: java.util패키지의 모든 클래스

-> 오른쪽 코드의 의미: java 패키지의 모든 클래스(패키지는 불포함)

클래스 이름이 Date로 같다!

- 클래스 이름은 같고 패키지가 다른 경우 import할 때는 클래스 앞에 패키지 명을 붙여줘야 한다.

static import문: static멤버를 호출할 때 클래스 이름을 생략할 수 있게 해준다.

import static java.lang.Integer.*; // Integer클래스의 모든 static메서드(static멤버)

import static java.lang.Math.random; // Math.random( )만. 괄호 안붙임

import static java.lang.System.out; // System.out을 out만으로 참조 가능

System.out.println(Math.random( )) -> out.println(random( ));으로 가능!(System과 Math 생략)

예제

import static java.lang.System.out; import static java.lang.Math.*; // Math클래스의 모든 static 멤버를 클래스 이름 생략해서 사용 가능 class Ex { public static void main(String[] args) { // System.out.println(Math.random()); out.println(random()); // System.out.println("Math.PI: " + Math.PI); out.println("Math.PI: " + PI); } }

from http://everysmallstep.tistory.com/78 by ccl(A) rewrite - 2022-01-01 11:02:10