7-3. package와 import

Hyun Jun·2022년 1월 22일
0

자바의 정석

목록 보기
28/52
post-thumbnail
post-custom-banner

package와 import

패키지(package)

클래스의 묶음.

관련된 클래스끼리 묶어 효율적인 관리가 가능해짐

모든 클래스는 반드시 하나의 패키지에 속해야 함.

서로 다른 패키지에 있다면 클래스의 이름이 같아도 충돌하지 않음.

 

클래스의 정식 이름은 앞에 패키지명을 포함하는데, 편의상 그 부분을 떼고 부르고 있음. (구별이 필요해지면 붙여서 비교해보면 됨)

ex) String 클래스 → java.lang.String (java.lang 패키지에 포함되어 있음)

 

패키지는 물리적 디렉토리로, 하위 패키지(하위 디렉토리)를 가질 수 있음.

ex) java 디렉토리 > lang 디렉토리 > String 클래스

 

패키지의 선언

클래스나 인터페이스 소스파일(.java)의 최상단에 선언

package 패키지명;

이름은 소문자로 시작하는 것을 원칙으로 함.

이로써 소스파일에 포함된 모든 클래스와 인터페이스는 선언된 패키지에 포함됨.

 

지금까지 패키지 선언 없이도 문제가 없었던 이유는 자동적으로 unnamed package에 속하는 것으로 취급하기 때문

큰 프로젝트나 라이브러리 작성 시에는 패키지를 반드시 구성하여 적용시켜야 함.

 

import문

import문은 사용하고자 하는 패키지의 이름을 명시해주는 용도.

클래스 이름 앞에 붙는 패키지를 일일이 작성하는 수고로움을 덜어줌.

 

import문의 선언

package문과 class 선언문 사이에 위치해야 함.

package문과 달리 import문은 여러번 선언 가능

import 패키지명.클래스명;
// 또는
import 패키지명.*;

*을 붙이게 되면, 특정 클래스가 아니라 해당 패키지에 속한 모든 클래스를 불러온다는 의미임.

하나만 콕 집는거보다 성능이 떨어지지 않나? NO

단, *은 하위 패키지를 불러온다는 의미는 아니기 때문에

import java.util.*;
import java.text.*;

이 2개를 합친답시고 아래처럼 쓰면 안됨.

import java.*;

 

간단한 예제로 package를 import 해보자

import java.text.SimpleDateFormat;
import java.util.Date;

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");

                System.out.println(today);
                System.out.println(date.format(today));
                System.out.println(time.format(today));
        }
}

java.text 패키지의 SimpleDateFormat 클래스와 java.util 패키지의 Date 클래스를 import하고

현재 날짜와 시간을 원하는 형식으로 formatting 하여 출력하는 작업을 수행했음.

 

static import문

static 멤버를 호출할 때 클래스 이름을 생략할 수 있게 해줌. 특정 클래스의 static 멤버를 자주 사용할 때

import static 패키지경로.클래스명.메서드명;

와 같이 static 키워드를 넣어 import 해오면 됨.

 

예시)

import static java.lang.Math.random;
import static java.lang.System.out;

이렇게 import 했다면 이제 Math.random() 메서드와 System.out() 메서드를 사용할 때 다음과 같이 쓸 수 있음.

out.println(random());
profile
Back-end Engineer 👨‍💻
post-custom-banner

0개의 댓글