Cronex

package와 import 본문

JAVA/JAVA의 정석

package와 import

crone 2021. 7. 20. 22:09

 

패키지

서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 

같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 자신만의 패키지 체계를 유지함으로써 서로 다른 패키지에 존재하는 것이 가능하므로 자신만의 패키지 체계를 휴지함으로써 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다.

String클래스의 패키지명을 포함한 이름은 java.lang.String 이다.

즉, java lang 패키지에 속한 String 클래스라는 의미이다. 그래서 같은 이름의 클래스 일지라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다.

클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다.

예를들어, java.lang.String클래스는 물리적으로 디렉토리 java의 서브디렉토리인 lang에 속한 String.class 파일이다.

 

컴파일 시 -d 옵션을 추가하여 컴파일 하게되면 해당 package에 맞게 디렉토리가 생성되게 된다.

ex)

package com.java.book;

class PackageTest{}

C:\jdk1.8\work> javac -d . PackageTest.java

 

이후 폴더를 보게되면 jdk1.8\work\com\java\book

아래 PackageTest.class파일이 생성된 것을 볼 수 있다.

 

:: 클래스패스는 컴파일러나 JVM 등이 클래스의 위치를 찾는데 사용되는 경로이다.

 

import문

클래스의 코드를 작성하기 전에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에 사용되는 클래스이름에서 패키지명은 생략할 수 있다.

import문에서 클래스의 이름 대신 "*"을 사용하는 것이 하위 패키지의 클래스까지 포함하는 것은 아니라는 것이다.

import java.util.*;

import java.text.*

-> import java.*; ( x )

java.lang 패키지는 따로 선언해주지 않아도 묵시적으로 선언되어 있다.

'JAVA > JAVA의 정석' 카테고리의 다른 글

메서드 참조  (0) 2021.07.21
java- 람다식(Lambda expression)  (0) 2021.07.20
chap02 변수  (0) 2021.06.09
자바 개발환경 구축하기  (0) 2021.06.05
Chap01 자바를 시작하기 전에  (0) 2021.06.04