- 패키지란 프로젝트 내부의 클래스들을 구분짓는 폴더 개념
- 실행은 패키지의 최상위 디렉토리인 root에서 진행
- 소스 코드 당 가장 첫 줄에 위치
- 패키지 이름과 현재 폴더의 이름이 같아야 한다
- 패키지 이름을 java 로 시작하면 안된다.(java 내장 패키지)
- 완전한 클래스 이름은 정의된 클래스 이름과 패키지 이름으로 구성(FQCN : Fully Qualifed Class Name)
아래의 명명 규칙은 알아두면 좋다.
- java.~ : 자바 내장 패키지
- javax.~ : 자바 확장 패키지
- org.~ : 비영리단체(오픈소스)
- com.~ : 영리단체
- 이름은 모두 소문자
- 자바 예약어 사용 불가 (int, static)
자바에서는 java.lang 이나 java.util 등의 내장 패키지가 자주 쓰인다. 그리고 Object 클래스 정보가 있는 java.lang 패키지는 import 하지 않아도 알아서 java.lang 패키지의 클래스들을 불러온다.
import 키워드는 다른 패키지 내의 클래스를 불러오기 위해서 사용된다.
import 패키지명.클래스명
패키지의 모든 클래스를 불러오기 위해선 아래와 같이 하면 된다.
import 패키지명.*
특히 JDk 1.5 부터는 정적 메소드나 정적 변수를 더욱 쉽게 사용하는 것을 지원한다.
import staic java.lang.Math.abs;
int num = abs(10);
위와 같이 정적 메서드를 Math 객체의 생성 없이 실행 시킬 수 있다.
말 그대로 클래스의 경로이다. 이것이 필요한 이유는 아래와 같다.
JVM이 프로그램을 실행할 때, 클래스패스를 사용하여 클래스 파일을 찾는다.
이는 자바프로그램을 실행할 때 .java 파일에서 .class 파일들이 만들어지고 JVM의 클래스로더를 통해 class 파일들이 JVM에 로딩된다. 이때 .class 파일을 찾을 때 클래스패스에 지정된 경로를 사용하는 것이다.
그래서 클래스패스는 .class 파일이 포함된 디렉토리와 파일을 콜론(;)으로 구분하고 이것을 지정하는 방법은 CLASSPATH 환경 변수와 -classpath 옵션이 있다.
CLASSPATH=.;C;\ProgramFiles\Java\jdk-11.0.1\lib\example.jars
컴퓨터의 시스템 변수 설정을 통해 클래스패스를 지정하는 방식이다.
JVM이 시작될 때 클래스 로더가 이 환경변수를 호출하고 여기에 설정되어 있는 디렉토리가 호출되면서 여기에 있던 클래스들이 로드된다.
javac -classpath <source files directory>
-classpath 옵션은 컴파일 시에 컴파일러가 참조할 클래스 파일 경로를 지정해주는 옵션이다.
접근 제어자는 클래스,메서드, 인스턴스 및 클래스 변수를 선언할 때 사용되며 말 그대로 외부로부터의 사용에 대한 접근을 제어하는 역할이다.