프로그래밍 언어/Java

Java(import(임포트))

benjykim 2018. 3. 15. 22:06
반응형

*이 포스트는 남궁성님의 '자바의 정석'책을 참고하여 작성했습니다.


* import문


:소스코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키짐여이 포함된 클래스 이름을 사용해야 한다. 하지만, 매번 패키지명을 붙여서 작성하는 것은 비효율적이다.


클래스의 코드를 작성하기 전에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에 사용되는 클래스이름에서 패키지명은 생략할 수 있다.


import문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 컴파일 시에 컴파일러는 import문을 통해 소스파일에 사용된 클래스들의 패키지를 알아 낸 다음, 모든 클래스이름 앞에 패키지명을 붙여 준다.





* import문의 선언


: 모든 소스파일(.java)에서 import문은 package문 다음에, 그리고 클래스 선언 문 이전에 위치해야 한다. 그리고 import문은 package문과는 달리 한 소스파일에 여러 번 선언할 수 있다.



- 일반적인 소스파일(*.java)의 구성은 다음의 순서로 되어 있다.

  1) package문

  2) import문

  3) class 선언



- import문을 선언하는 방법은 다음과 같다.


  import 패키지명.클래스명;

또는

  import 패키지명.*;



import java.util.Calendar;

import java.util.Date;


위의 import문을 다음과 같이 한 문장으로 처리할 수 있다.


import java.util.*;


: 한 패키지에서 여러 클래스를 사용하는 경우 클래스의 이름을 일일이 지정해주는 것보다 '패키지명.*'과 같이 하는 것이 편리하다. 하지만, import하는 패키지의 수가 많을 때는 어느 클래스가 어느 패키지에 속하는지 구별하기 어렵다는 단점이 있다.


한 가지 더 알아두어야 할 것은 import문에서 클래스의 이름 대신 '*'을 사용하는 것이 하위 패키지의 클래스까지 포함하는 것은 아니라는 것이다.


import java.util.*;

import java.text.*;


그래서 위의 두 문장 대신 다음과 같이 할 수는 없다.


import java.*;



: import문을 패키지로 지정하지 않으면 모든 클래스이름 앞에 패키지명을 반드시 붙여야 한다. 단, 같은 패키지 내의 클래스들은 import문을 지정하지 않고도 패키지명을 생략할 수 있다. 



System과 String 같은 java.lang패키지의 클래스들을 패키지명 없이 사용할 수 있었던 이유는 모든 소스파일에서 묵시적으로 다음과 같은 import문이 선언되어 있기 때문이다.(java.lang패키지는 매우 빈번히 사용되는 중요한 클래스들이 속한 패키지라 따로 import문으로 지정하지 않아도 되도록 한 것이다.)


import java.lang.*;




* static import문


: static import문을 사용하면 static멤버를 호출할 때 클래스 이름을 생략할 수 있다. 특정 클래스의 static멤버를 자주 사용할 때 편리하다. 그리고 코드도 간결해진다.


다음의 예제를 보면 편리함을 확인할 수 있다.


import static java.lang.System.out;

import static java.lang.Math.*;


class StaticExample {

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);

}

}

반응형