패키지(package)
- 서로 관련된 클래스의 묶음. 이름이 같은 클래스라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다.
- 클래스의 실제 이름(full name 예) String)은 패키지를 포함(java.lang.String)
-> Java 패키지(폴더) 안에 -> lang 패키지(하위 폴더) 안에 -> String 클래스 파일
패키지의 선언
- 패키지는 소스파일의 첫 번째 문장으로 단 한번 선언(파일 맨 위에)
- 같은 소스 파일의 클래스들은 모두 같은 패키지에 속하게 된다.
- 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해 소문자로!
- 이름없는 패키지(unnamed): 패키지 선언이 없는 클래스들이 속하게 되는 패키지 (이클립스에선 default package)
클래스 패스(classpath)
- 클래스 파일(*.class)의 위치를 알려주는 경로(path)
- 환경변수(OS에서 관리) classpath로 관리하며, 경로간의 구분자는 ‘;’를 사용
- classpath(환경변수)에 패키지의 루트를 등록해줘야 함
누가: JVM이 | 언제: 프로그램을 실행 할 때 | 왜: 클래스파일을 찾기 위해 |
무엇을: 클래스패스(기존파일경로)를 | 어떻게: 사용한다 |
import문
- 클래스를 사용할 때 패키지 이름을 생략할 수 있음
- 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것
- 컴파일 시 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아낸 다음 모든 클래스 이름 앞에 패키지 명을 붙여줌(이클립스 자동 단축키 ctrl + shift + O)
class ImportTest {
java.util.Date today = new java.util.Date(); //원래 기존에 해야하는 방식
}
import java.util.Date;
class ImportTest {
Date today = new Date(); //패키지 이름 생략 가능!
}
<원래 기본 형식>
public static void main(java.lang.String[] args) {
java.lang.System.out.println("Hello");
}
-> java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다.(String, Objcet, System, Thread…)
import문의 선언
- import문을 선언하는 방법: import 패키지명.클래스명; 또는 import 패키지명.*; (이클립스 자동 단축키 ctrl+shift+O)
- import문은 패키지문과 클래스선언 사이에 선언한다.
- impot문은 컴파일 시에 처리되므로 프로그램의 성능에 영향 없음
-> 오른쪽 코드의 의미: java.util패키지의 모든 클래스
-> 오른쪽 코드의 의미: java 패키지의 모든 클래스(패키지는 불포함)
- 클래스 이름은 같고 패키지가 다른 경우 import할 때는 클래스 앞에 패키지 명을 붙여줘야 한다.
static import문: static멤버를 호출할 때 클래스 이름을 생략할 수 있게 해준다.
import static java.lang.Integer.*; // Integer클래스의 모든 static메서드(static멤버)
import static java.lang.Math.random; // Math.random( )만. 괄호 안붙임
import static java.lang.System.out; // System.out을 out만으로 참조 가능
System.out.println(Math.random( )) -> out.println(random( ));으로 가능!(System과 Math 생략)
예제
import static java.lang.System.out;
import static java.lang.Math.*; // Math클래스의 모든 static 멤버를 클래스 이름 생략해서 사용 가능
class Ex {
public static void main(String[] args) {
// System.out.println(Math.random());
out.println(random());
// System.out.println("Math.PI: " + Math.PI);
out.println("Math.PI: " + PI);
}
}
'멀티캠퍼스 풀스택 과정 > Java의 정석' 카테고리의 다른 글
자바의 정석3-5 캡슐화(encapsulation)와 다형성(polymorphism) (3) | 2022.01.05 |
---|---|
자바의 정석3-4 제어자(static, final, abstract, 접근제어자) (0) | 2022.01.01 |
자바의 정석3-2 오버라이딩, super 참조변수, super( ) 생성자 (0) | 2022.01.01 |
자바의 정석3-1 상속(Inheritance)과 포함(composite) (0) | 2022.01.01 |
자바의 정석2-8 변수의 초기화, 멤버변수(iv,cv)의 초기화 (0) | 2021.12.31 |