-
[Study] 자바 7주차 과제JAVA 2021. 1. 18. 21:55반응형
7주차 과제입니다.
package 키워드
- 자바에서 패키지란 클래스와 인터페이스의 집합을 의미함.
- 물리적으로 하나의 디렉터리를 의미함.
- 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디텍터리에 포함.
- 디럭테리의 계층 구조는 점(.)으로 구분됨.
- 자바의 모든 클래스는 반드시 하나 이상의 패키지에 포함.
- 어떠한 패키지의 선언도 포함되지 않으면, 컴파일러가 기본적으로 이름 없는 패키지(unnamed package)에 포함해 컴파일함. - 선언
package 패키지이름;
위와 같은 명령문을 클래스나 인터페이스의 소스 파일에 추가하기만 하면 됨.
패키지 이름에는 패키지의 경로까지 포함한 풀 네임을 명시. - FQCN (Fully Qualified Class Name)
모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있음.
이 둘을 합쳐야 완전하게 한 클래스를 표현할 수 있으며 FQCN이라 함.
ex) String 클래스의 패키지는 "java.lang"이며 FQCN은 "java.lang.String"이 됨.
import 키워드
- 원래는 패키지에 속한 클래스를 다른 파일에서 사용하기 위해서는 클래스 이름 앞에 패키지의 경로까지 포함한 풀 네임을 명시해 사용.
- 매번 긴 이름을 사용하는 것은 비효율적이므로, 자바에서는 import 키워드를 별도로 제공함.
- import 문은 자바 컴파일러에 사용할 클래스의 패키지 정보를 미리 제공하는 역할을 함.
- 선언
import 패키지이름.클래스이름; //해당 패키지의 특정 클래스만을 사용하고자 할 때 import 패키지이름.*; //해당 패키지의 모든 클래스를 클래스 이름만으로 사용하고자 할 때 //별표(*)를 사용하는 것이 해당 패키지에 포함된 다른 모든 하위 패키지의 클래스까지 포함해주는 것 X import java.awt.*; import java.util.*; //import java.*; (X)
빌트-인 패키지(Built-in Package)
자바는 개발자들이 사용할 수 있도록 여러 많은 패키지 및 클래스를 제공합니다.
이를 빌트-인 패키지라고 하며 가장 자주 쓰이는 패키지로는 java.lang과 java.util이 있습니다.
이 경우 java.lang은 자주 사용하는 패키지이지만 한번도 import하여 사용한 적이 없습니다.
즉, 자바에서 java.lang 패키지는 아주 기본적인 것들이기 때문에 import로 불러오지 않아도 자바가 알아서 java.lang의 클래스를 불러옵니다.
클래스패스
클래스패스란 컴파일러나 JVM이 클래스의 위치를 찾을 때 사용하는 경로를 의미합니다.
지정해주지 않으면 기본적으로 현재 디렉터리가 클래스패스로 지정되며 세미클론(;)을 구분자로 하여 여러 개의 경로를 지정할 수 있습니다.
이 때 지정하기 위한 방법으로 두 가지가 있습니다.
- 클래스패스 환경 변수 사용
시스템에서 어디서든 참조할 수 있게 환경변수를 설정할 수 있는데 컴퓨터 시스템 변수 설정을 통해 지정할 수 있습니다.
JVM이 시작될 때 JVM의 클래스 로더는 이 환경 변수를 호출합니다. 그래서 환경 변수에 설정되어 있는 디렉터리가 호출되면 그 디렉터리에 있는 클래스들을 먼저 JVM에 로드합니다. 그러므로 클래스패스 환경 변수에는 필수 클래스들이 위치한 디렉터리를 등록하도록 합니다. - java runtime에 -classpath 옵션 사용
컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일 시 파일 경로를 지정해주는 옵션입니다. cmd에서 명령어를 통해 임시로 지정할 수 있습니다.
명령어 -classpath 클래스패스 경로 명령어 -cp 클래스패스 경로 javac -classpath C:\Example\Test C:\Example\Hello.java (Hello.java 파일이 C:\Example에 존재하고, 필요한 클래스 파일들이 C:\Example\Test에 위치)
접근지시자(Access Modifiers)
접근 지시자는 멤버 변수나 메소드들의 접근 범위를 정의하기 위해 사용합니다.
- public: 접근을 제한하지 않아 어디서든 접근이 가능합니다.
- private: 클래스 내부에서만 접근을 허용합니다.
- protected: 클래스 내부, 동일 패키지, 상속받은 클래스에서만 접근을 허용합니다.
- default(명시하지 않음): 클래스 내부와 동일 패키지에서만 접근이 가능합니다.
References
- blog.baesangwoo.dev/posts/java-livestudy-7week/
- www.notion.so/ed8e346f88f54849a06ff968b1877ca5
728x90'JAVA' 카테고리의 다른 글
[Study] 자바 9주차 과제 (0) 2021.01.27 [Study] 자바 8주차 과제 (0) 2021.01.24 [Study] 자바 6주차 과제 (0) 2021.01.15 [Study] 자바 5주차 과제 (0) 2021.01.10 [Study] 자바 4주차 과제 (1) 2020.12.08