ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [7주차]whiteship 스터디 참여
    스터디/[whiteship]JAVA 2020. 12. 27. 21:01

    목표

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


    학습할 것 (필수)

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

    Package

    정의 : 자바에서 패키지란 비슷한 성격의 클래스들을 모아 만든 자바의 디렉토리이다. 클래스나 인터페이스가 컴파일되면 .class 파일이 생기고 그 클래스 파일들은 반드시 패키지에 소속되어야 한다. 소스 파일 최상단에는 package키워드를 이용하여 클래스가 소속될 패키지 명을 선언해준다. -> 최상단에 package키워드를 이용해 자바의 클레스의 경로를 명시해 주는 것이 네임스페이스이다.

     

    Built-in Package

    출처 :https://ahnyezi.github.io/java/javastudy-7-package/

    패키지의 종류에는 사용자 정의 패키지와 Built-in 패키지 두 종류로 나뉜다.

    사용자 정의 패키지는 말 그대로 사용자가 정의한 패키지 이며, Built-in 패키지는 자바 API가 포함되는 다수의 클래스를 포함하는 패키지이다. 

     

    Built-in 패키지 종류

    출처 : https://ahnyezi.github.io/java/javastudy-7-package/

    여기서 우리가 알 수 있는 부분은 java.lang 패키지이다. java.lang 패키지 내 String 클래스나 System 클래스를 사용할 때 별도의 import 없이 사용한다. -> java.lang의 경우 아주 기본적인 패키지이기 때문에 별도의 명세가 없어도 된다.

     

    사용자 패키지

    패키지 구조

     

    같은 패키지 안에 있는 Student 클래스 그리고 play클래스는 별도의 import문 필요 없이 같은 패키지 내에 다른 클래스의 메서드 및 변수를 호출할 수 있다.

     

    ※패키지 네이밍 주의사항

    또한 패키지의 이름은 모두 소문자 그리고 자바의 예약어(int, static, for, if...)는 불가하다.

     

    Import

    다른 패키지에 있는 클래스를 사용하고자 할 때 사용하는 키워드로 import 패키지.클래스 형식으로 경로를 선언해 컴파일러에게 알려준다.

    한 패키지에서 많은 클래스를 불러 사용할 경우, import 패키지.*를 사용한다.

     

    클래스패스

    자바의 클래스패스란 말 그대로 클래스를 찾기 위한 경로이다.

    JVM이 프로그램을 실행할 때, 클래스 파일을 찾는 데 기준이 되는 파일 경로를 말하는 것이다.

    1) 소스 코드(.java)를 컴파일하면 -> 바이트 코드(.class)로 변환이 되는데 java 또는 jre으로 이 바이트 코드 파일에 포함된 명령어를 실행하려면 먼저 이 파일을 찾아야 한다. 

    2) 이때 바이트 코드(.class) 파일을 찾을 때 classpath에 지정된 경로를 사용한다.

    3) 클래스패스는. class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다.

    4) java runtime은 이 classpath에 지정된 경로를 모두 검색해 .class 파일을 찾는다.

    ※classpath를 지정할 수 있는 방법은 환경 변수 CLASSPATH를 지정하거나 java runtime에서 -classpath플래그를 사용하는 방법이 있다.

    먼저 클래스패스를 사용하기 위해 다음과 같은 소스코드 파일과 컴파일된. class파일을 구성한다.

    hello.java내 소스코드

    CLASSPATH 환경변수

    먼저 환경변수는 운영체제에 지정하는 변수로 JVM과 같은 애플리케이션들은 환경변수의 값을 참고해서 동작하게 된다. 자바는 클래스패스로 환경변수 CLASSPATH를 사용하는데, 이 값을 지정하면 실행할 때마다 -classpath 옵션을 사용하지 않아도 되기 때문에 편안하지만, 운영체제가 바뀐다면 패스가 사라지기 때문에 불편함 점도 있다.

    따라서 CLASSPATH에 설정된 경로를 JVM이 참조해서 별도의 -classpath옵션 없이 환경변수로 설정된 경로로 파일을 찾는다.

     

    -classpath

    -classpath의 옵션을 설명하자면 다음과 같다.

    사용한 옵션 -> .:/Users/kim/Documents/javatest 

    1) 콤마(.)는 현재 위치한 디렉토리부터 .class파일을 찾는다는 뜻이다. 

    2) 구분자인 콜론(:), 세미콜론(;)을 사용해 현재 위치(.)에 찾는 파일이 없다면 다음 경로에 있는(/Users/kim/Documents/javatest)로 이동해 해당 파일을 찾는다.

    ※윈도우에선 구분자로 세미콜론, 맥에선 콜론을 사용한다.

    3) -classpath는 default값이 "."(현재 디렉토리)이다.

    추가로 -classpath는 컴파일과 바이트 코드 파일을 실행할 때 사용할 수 있다.

     

    접근지시자

    자바에선 4개의 접근 제어자가 존재한다.

    1) package private는 우리가 알고 있는 디폴트 접근 지정이다.

    2) public 경우 패키지를 막론하고 모든 클래스들이 접근이 가능하다.

    3) protected 지정자는 상속받은 자식 클래스 한에서 사용 가능하다.

    4) private의 경우 가장 제한이 높은 지정자로 주로 setter, getter의 초기화 변수로 많이 사용되며 선언된 해당 클래스 안에서만 이용이 가능하다.

     

    [REFERENCE]

    명품 자바 에센셜 - 황기태 지음

    onsil-thegreenhouse.github.io/programming/java/2017/11/12/java_tutorial_1-9/

     

    [Java] 패키지(package)와 접근 제어자(public, protected, package-private, private) - Onsil's blog

    초짜 개발자 온실의
    스터디 블로그

    onsil-thegreenhouse.github.io

    effectivesquid.tistory.com/entry/자바-클래스패스classpath란

     

    자바 클래스패스(classpath)란?

    클래스패스란(Class Path)란?? 클래스패스란 말 그대로 클래스를 찾기위한 경로이다. 자바에서 클래스패스의 의미도 똑같다. 즉, JVM이 프로그램을 실행할 때, 클래스파일을 찾는 데 기준이 되는 파

    effectivesquid.tistory.com

    opentutorials.org/course/1223/5527

     

    클래스 패스 - 생활코딩

    본 수업에서는 IDE(eclipse, intellij)를 사용하지 않고 운영체제의 기본 에디터를 사용 한다. 클래스 패스 빈 디렉터리에 아래와 같이 코드를 작성한다. 필자는 프로젝트 디렉토리에 /srcbin 이라는 디

    opentutorials.org

     

    '스터디 > [whiteship]JAVA' 카테고리의 다른 글

    [4주차]제어문  (0) 2021.01.26
    [3주차]자바가 제공하는 다양한 연산자  (0) 2021.01.23
    [2주차]자바 데이터 타입, 변수 그리고 배열  (0) 2021.01.12
    [8주차]인터페이스  (0) 2021.01.06
    [1주차]JVM  (0) 2021.01.02
Designed by Tistory.