패키지(package)란, 클래스 묶음입니다.
패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있습니다.
같은 이름의 클래스일 지라도 서로 다른 패키지에 존재하는 것이 가능해서,
다른 개발자가 개발한 클래스 라이브러리의 클래스 이름과 충돌하는 것을 피할 수 있습니다.
클래스가 물리적으로 하나의 클래스파일(*.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리입니다.
예를 들어, java.lang.String
클래스는 디렉토리 java
의 서브 디렉토리인 lang
에 속한 String.class
파일입니다.
클래스나 인터페이스의 소스파일(.java)의 맨 위에 다음과 같이 한 줄만 적어주면 됩니다.
package 패키지명;
클래스명과 쉽게 구분하기 위해서 소문자로 하는 것을 원칙으로 하고 있습니다.
모든 클래스는 반드시 하나의 패키지에 포함되어야 합니다.
소스파일에 자신이 속한 패키지를 지정하지 않는 모든 클래스는 자동적으로 이름 없는 패키지에 속하게 됩니다.
import문은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공합니다.
모든 소스파일(*.java)에서 import문은 package문 다음에, 그리고 클래스 선언문 이전에 위치해야 합니다.
import문은 package문과 달리 한 소스파일에 여러 번 선언할 수 있습니다.
import 패키지명.클래스명;
or
import 패키지명.*; 👈 지정된 패키지에 속하는 모든 클래스
클래스패스는 컴파일러(java.exe)나 JVM등이 클래스 위치를 찾는 데 사용되는 경로입니다.
소스 코드(.java)를 컴파일하면 바이트코드(.class)로 변환되고 JVM이 바이트코드로 된 파일을 실행하려면 찾아야 하는데 이 바이트코드까지의 경로를 클래스패스라고 합니다.
.java 파일 👉 Compile 👉 .class 파일
-classpath
옵션 사용
윈도우에선 내PC - 속성 - 고급 시스템 설정 - 고급 탭 - 환경변수 - 새로 만들기에서
classpath라고 변수 이름을 지정하고
변수 값을 JAVA_HOME 아래의 lib 폴더로 지정해주면 됩니다.
javac <options> <source files>
컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일시 파일 경로를 지정해주는 옵션입니다.
만약 BestStar.java 파일이 C:\Java 디렉터리에 존재하고 필요한 클래스 파일들이 C:\Java\BestStarClass에 위치한다면
javac -classpath C:\Java\BestStarClass C:\Java\BestStar.java
로 해주면 됩니다.
만약 참조할 클래스 파일들이 다른 디렉터리에도 존재한다면
javac -classpath .;C:\Java\BestStarClass;C:\Java\ABCDEFG;C:\Java\BestStar.java
과 같이 세미콜론(;)으로 구분해줄 수 있습니다.
참고로 도트(.)는 현재 디렉토리를 의미합니다.
이러한 -classpath 옵션을 사용하지 않을 경우 클래스 파일이 위치한 현재 디렉토리를 기본 클래스로 잡아줍니다.
💡 -classpath 옵션은 java(런타임)와 javac(컴파일타임) 명령어에 모두 사용할 수 있습니다.
클래스 외부에서 클래스의 멤버 변수, 메서드, 생성자를 사용할 수 있는지 여부를 지정하는 키워드
종류 : private, default, protected, public
https://doozi0316.tistory.com/entry/JAVA-7%EC%A3%BC%EC%B0%A8-%ED%8C%A8%ED%82%A4%EC%A7%80-package-import-classpath
https://beststar-1.tistory.com/17
https://computer-science-student.tistory.com/321