Haneul's Blog

[Java] 패키지 본문

Java

[Java] 패키지

haneulss 2022. 10. 18. 15:06

목표 [백기선 자바 스터디 7주차]

자바의 패키지에 대해 학습하세요.

학습할 것

  • package 키워드
  • import 키워드
  • 클래스패스
  • CLASSPATH 환경변수
  • -classpath 옵션
  • 접근지시자

 

package 키워드

자바에서 클래스가 많아지면 이를 한 곳에서 관리하기가 힘듭니다. 이를 관련된 파일끼리 폴더별로 관리하게 되는데 이를 관리하는 폴더를 자바에서는 패키지라고 합니다.

 

패키지의 특징

  • 한 폴더에 같은 이름의 클래스가 2개 이상 올 수 없습니다.
  • 소스의 가장 첫 줄에 있어야 하고, 패키지 선언은 소스 하나에 하나만 있어야 합니다.
  • 패키지 이름과 위치한 폴더의 이름이 같아야 합니다.
  • 패키지 이름을 java로 시작하면 안됩니다.
  • 패키지 이름은 모두 소문자여야 합니다.

-> 모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있습니다. 이 둘을 합쳐야 완전한 클래스를 표현한다고 할 수 있고 FQCN(Fully Qualified Class Name)이라고 합니다.

 

 

패키지 종류

  • Built-in Package 
    -> 자바는 개발자들이 사용할 수 있도록 여러 많은 패키지 및 클래스를 제공하며 대표적으로 가장 많이 쓰이는 java.lang과 java.util이 있습니다. 여기서 java.lang은 자동으로 import되는 특징이 있습니다.
  • User-defined Package 
    -> 유저에 의해 정의된 패키지를 의미합니다.

 

import 키워드

import는 다른 패키지에 있는 클래스에 접근하기 위해 사용됩니다.
클래스 이름을 명시하면 특정 클래스에 접근 가능하고, *를 사용하면 패키지 내의 모든 클래스에 접근할 수 있습니다.


static import

static import를 사용하면 static member를 class name을 명시하지 않고 접근할 수 있게 됩니다.
주로 가독성을 위해 사용되지만 남용하는 경우에는 오히려 가독성을 해치는 경우가 생길 수 있습니다.

import static java.lang.System.*;

class Test{
	public static void main(String[] args) {
	       out.println("java.lang의 System을 static import하여 앞의 System을 빼고 사용할 수 있음");
    }
}

 

 

CLASSPATH 환경변수 및 -classpath

JVM에서 사용하는 매개변수로 Java 프로그램을 컴파일 및 실행하는데 사용됩니다. 또한, 패키지에 경로를 지정하여 Application ClassLoader를 통해 참조, 접근할 수 있습니다.

이러한 CLASSPATH는 현재 디렉토리나 서브 디렉토리에 없는 클래스를 사용해야 하는 경우나 지정한 위치에 존재하지 않는 클래스를 불러와야 할 경우에 사용됩니다.

그렇다면 어떻게 CLASSPATH를 지정하여 사용할까요? 그것은 아래와 같이 2가지의 방법이 있습니다.

  1. CLASSPATH 환경 변수를 지정하여 사용
    CLASSPATH라는 환경 변수를 통해 JVM이 런타임시 기준으로 삼을 파일 경로를 전달해줄 수 있습니다. 환경변수에 경로를 등록하게 되면 JVM 클래스 로더는 이 디렉토리에 있는 클래스를 로드하게 됩니다.
  2. -classpath 옵션 사용
    -classpath 옵션은 java, javac 등의 명령에서 사용할 수 있으며 이를 사용할 경우 (1)에 있는 CLASSPATH 환경 변수에서 등록한 경로보다 우선순위가 됩니다.

 

접근지시자

접근지시자는 클래스, 메서드, 인스턴스 및 클래스 변수를 선언할 때 사용됩니다.
자세한 내용은 이전에 정리한 클래스에서 접근지시자에 대한 내용을 정리한 바가 있기 때문에 아래의 링크를 참고하면 좋을 것 같습니다.

https://haneulss.tistory.com/22

 

[Java] 클래스

목표 [백기선 자바 스터디 5주차] 자바의 Class에 대해 학습하세요. 학습할 것 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메서드 정의하는 방법 생성자 정의하는 방법 this 키워

haneulss.tistory.com

 

 

'Java' 카테고리의 다른 글

[Java] 예외 처리  (0) 2022.10.20
[Java] 인터페이스  (0) 2022.10.19
[Java] 상속  (0) 2022.10.17
[Java] 클래스  (0) 2022.10.16
[Java] 제어문  (0) 2022.10.15