패키지

김설영·2022년 3월 29일
0

기본 개념

  • 패키지 : 서로 관련된 클래스 묶음
  • 클래스는 클래스 파일(*.class), 패키지는 폴더. 하위 패키지는 하위 폴더
  • 클래스의 실제 이름은 패키지 이름을 포함. (java.lang.String)
  • rt.jar 는 클래스 파일들을 압축한 파일 -> Java9 부터 없어짐
  • Java9 부터는 module 개념 도입

패키지 선언

  • 소스 파일의 첫 번째 문장으로 단 한번 선언
  • 같은 소스 파일 내의 클래스들은 모두 같은 패키지에 속함
  • 패키지 선언이 없으면 이름 없는(Unnamed) 패키지에 속하게 됨
package com.codechobo.book;  // 패키지 선언
// 폴더 순서 : com -> codechobo -> book

public class PackageTest {
	//...
}

class PackageTest2 {}

클래스 패스

  • 클래스 파일의 위치를 알려주는 경로(path)
  • 환경변수 classpath로 관리하며, 각 경로 간 구분자는 ';'를 사용
    ex: 경로1;경로2;경로3
  • 패키지 루트를 classapth(환경변수)에 등록 해줘야 함
  • 환경변수를 새로 만든 후, 변수 이름 : classpath / 변수 값 : 패키지 루트 를 작성하여 등록

Import문

  • 클래스를 사용할 때, 패키지 이름을 생략할 수 있다.
  • 컴파일러에게 클래스가 속한 패키지를 알려준다.
  • java.lang 패키지의 클래스는 import 하지 않아도 기본적으로 사용이 가능하다.
    ex : String, Object, System, Thread ...
  • import 패키지명.클래스명;
  • import 패키지명.*; -> 해당 패키지의 모든 클래스를 의미
    -> import문은 컴파일 시에 처리되므로, 프로그램의 성능에 영향 없음.
  • import문은 패키지 선언과 클래스 선언 사이에 선언한다.
  • 이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지 명을 붙여줘야 한다.
// 생략 전
class Import Test {
	java.util.Date today = new java.util.Date();
}

=>

// 생략 후
import java.util.Date;
class Import Test {
	Date today = new Date();
}
// 이름이 같은 클래스는 꼭 패키지 명을 붙여줘야 한다
import java.sql.*;		// java.sql.Date
import java.util.*;		// java.util.Date

public class ImportTest {
	public static void main(String[] args) {
    	java.util.Date today = new java.util,Date();
    }
}

Static import문

  • static 멤버(static 변수, static 메서드)를 사용할 때, 클래스 이름을 생략할 수 있게 해준다.
import static java.lang.Integer.*;		// Integer 클래스의 모든 static 멤버
import static java.lang.Math.random;	// Math.random()의 Math 이름을 생략하고 random()만으로 참조 가능
import static java.lang.System.out;		// System.out의 System 이름을 생략하고 out 만으로 참조 가능
profile
블로그 이동하였습니당! -> https://kimsy8979.tistory.com/

0개의 댓글