본문 바로가기
Java

Java Study 4주차

by 균진 2023. 10. 29.
  • package 키워드
  • import 키워드
  • 클래스패스
  • CLASSPATH 환경변수
  • classpath 옵션
  • 접근지시자

package 키워드

자바에서 패키지란 계층 구조로 클래스 라이브러리를 관리하기 위한 컴파일러 단에서 정의하기 위한 계층 구조 정의 키워드이다. 같은 이름의 클래스여도 폴더로 분리하여 서로 다른 패키지에 존재하는 것이 가능해, 자신만의 패키지 체계를 유지하면서 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다.

패키지는 다중 선언이 불가능하다. 하나의 소스 파일엔 하나의 패키지만 선언이 가능하다.

패키지 선언

package java.awt.event;
java.awt.event.* -> java.awt.event로 부터 모든 클래스를 가져온다.

import 키워드

패키지 내 클래스를 불러오는 키워드이다. '.'을 통해 하위 경로로 이동이 가능하다.
선언 -> import (패키지명).( 하위 패키지 명).( 클래스 또는 * )
import문에서 * 을 사용하는 경우는 하위 클래스까지 포함하는 것은 아니다.
import static이라는 문법이 존재해 이 방식으로 선언하면 클래스 사용할 때 따로 패키지를 기입할 필요가 없다.

Classpath

클래스를 찾기 위한 경로로 JVM이 프로그램을 실행할 때, 클래스 파일을 찾는 데 기준이 되는 파일 경로를 말하는 것이다.
소스 코드(.java로 끝나는 파일)를 컴파일하면 소스 코드가 바이트 코드(바이너리 형태의 .class 파일)로 변환된다.
 java runtime(java 또는 jre)으로 이 .class 파일에 포함된 명령을 실행하려면, 먼저 이 파일을 찾을 수 있어야 한다. 이때 .class 파일을 찾을 때 classpath에 지정된 경로를 사용한다. classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다. java runtime은 이 classpath에 지정된 경로를 모두 검색해서 특정 클래스에 대한 코드가 포함된 .class 파일을 찾는다. 찾으려는 클래스 코드가 포함된 .class 파일을 찾으면 첫 번째로 찾은 파일을 사용한다.
 Pasted image 20231029224153.png

classpath를 지정할 수 있는 두 가지 방법이 있다. 하나는 환경 변수 CLASSPATH를 사용하는 방법이고, 또 하나는 java runtime에 -classpath 플래그를 사용하는 방법이다.

CLASSPATH 환경변수

환경변수는 운영체제에서 자식 프로세스들을 생성할 때 참조하는 변수로
프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들을 모아둔 것이다.

JVM 기반의 애플리케이션도 이 환경변수 값을 참고해서 동작하게 된다.
컴파일된 바이트코드를 클래스로더가 클래스 로딩 단계에서 CLASSPATH 라는 환경변수에 있는 경로들을 참조하여 로딩을 한다.

classpath 옵션

  1. -d : javac는 클래스가 있는 디렉터리에 클래스 파일을 생성한다. 이 옵션을 제공하면 해당 디렉터리도 생성하고 관련된 패키지 디렉터리도 생성하여 클래스 파일을 만들어준다.
  2. -deprecation : deprecated된 클래스에 대한 상세한 정보를 포함하여 컴파일한다.
  3. -g : 디버깅과 관련된 정보를 포함한 클래스 파일을 생성한다.
  4. -client : 클라이언트 VM을 사용한다. Swing과 같이 클라이언트 UI를 처리할 때 유용
  5. -server : 서버 "VM"을 사용한다.
  6. -cp 또는 -classpath : 클래스 패스를 지정할 때 사용하며 이 옵션의 공백 뒤에 경로를 연달아 지정하면 된다.
  7. -verbose : 클래스가 JVM에 로딩되는 정보를 출력함
  8. -verbosege : gc가 발생하는 정보를 출력한다.
  9. -version : JVM의 버전을 출력하고 프로세스를 종료한다.
  10. -showversion : JVM의 버전을 출력하고 자바 프로세스를 계속 수행한다.

접근지시자

클래스, 필드, 메서드 단위로 외부에서 접근 가능한 범위를 설정하는 것을 말한다.
다른 표현으로는 접근 제한자, 접근 수준 지시자라고도 한다.

종류

  • public : 모든 패키지에서 아무런 제한 없이 호출 가능하다.
  • protected : default 접근 제한과 마찬가지로 같은 패키지에 속하는 클래스에서 호출할 수 있다. 차이점은 다른 패키지에 속한클래스가 해당 클래스의 하위 클래스라면 호출할 수 있다.
  • package-private(default) : 접근 제한자를 명시하지 않았다면 dafault접근 제한을 가진다. 같은 패키지 안에서는 제한 없이 호출할 수 있으나, 다른 패키지에서는 호출할 수 없다.
  • private : 클래스 내부에서만 사용할 수 있다.

Pasted image 20231029232509.png

접근 지시자 사용 이유

  • 외부로부터의 접근을 제한하여 데이터를 보호하기 위함 -(은닉성)
  • 외부에는 불필요하고내부적으로만 사용되는 부분을 감추기 위함 -(캡슐화)

'Java' 카테고리의 다른 글

Java 3주차_트리  (0) 2023.10.15
Java 3주차_상속  (1) 2023.10.15
Java Study 3주차  (0) 2023.10.12
Queue  (0) 2023.10.10
ListNode를 사용한 Stack  (0) 2023.10.10