import문
- 사용할 클래스가 속한 패키지를 지정하는데 사용
import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있다.
ctrl+shift+o 자동으로 import문 만들어짐
java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다. (생략 가능)
일반적인 소스파일(*.java)의 구성
1.package문
2.import문
3.클래스 선언
import 패키지명.클래스명;
또는
import 패키지명.*; 이 패키지에 속한 모든 클래스
import문은 패키지문과 클래스선언의 사이에 선언한다.
같은 패키지에서 여러 개의 클래스가 사용될 때, import문을 여러 번 사용하는대신 '패키지명.*'을 이용해서 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다.
- import문은 컴파일 시에 처리되므로 프로그램의 성능에 아무런 영향을 미치지 않는다.
- 다음의 두 코드는 서로 의미가 다르다.
*; 의 의미 : 모든 클래스
import java.*; java 패키지의 모든 클래스를 의미(패키지는 포함 안됨)
java.util 패키지와 java.text 패키지를 모두 import 하고 싶다 vs. java 패키지의 모든 클래스를 의미. 패키지는 포함안됨
- 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 한다.
클래스 이름이 Date로 동일하고, 패키지가 다른 경우 , Date 클래스가 sql 패키지인지 util 패키지인지 알 수 없다 -> 그럴 때 클래스 앞에 패키지 이름을 직접 적어준다.
예10)
import java.text.SimpleDateFormat;
import java.util.Date;
public class ImportTest {
public static void main(String[] args) {
Date today = new Date();
SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat time = new SimpleDateFormat("hh:mm:ss a");
System.out.println("오늘 날짜는" + date.format(today));
System.out.println("현재 시간은" + time.format(today));
}
}
simpleDateFormat 과 Date 클래스는 다른 패키지에 속한 클래스이므로 import문으로 어느 패키지에 속하는 클래스인지 명시해주었다. 그래서 소스에서 클래스 이름 앞에 패키지명을 생략할 수 있었다.
만일 import문을 지정하지 않았다면 클래스이름에 패키지명도 적어줘야했다.
import java.text.SimpleDateFormat;
import java.util.Date;
public class ImportTest {
public static void main(String[] args) {
java.util.Date today = new java.util.Date();
java.text.SimpleDateFormat date = new java.text.SimpleDateFormat("yyyy/MM/dd");
java.text.SimpleDateFormat time = new java.text.SimpleDateFormat("hh:mm:ss a");
System.out.println("오늘 날짜는" + date.format(today));
System.out.println("현재 시간은" + time.format(today));
}
}
import문으로 패키지를 지정하지 않으면 모든 클래스이름 앞에 패키지명을 반드시 붙여야한다.
단, 같은 패키지 내 클래스들은 import문을 지정하지 않고도 패키지명을 생략할 수 있다.
지금까지 System과 String 같은 java.lang 패키지의 클래스들을 패키지명없이 사용할 수 있었던 이유는 모든 소스파일에는 묵시적으로 다음과 같은 import문이 선언되어 있기 때문이다.
import java.lang.*;
static import문
static 멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다.
1) Integer 클래스에 있는 모든 static 멤버(static 변수, static 메서드)
2) 원래는 Math.random인데 import 문에 써놓으면 클래스 이름이 생략이 가능하다.
예11)
import static java.lang.System.out;
import static java.lang.Math.*;
public class StaticImportEx1 {
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 > 객체지향프로그래밍2' 카테고리의 다른 글
[JAVA] 제어자(modifier) (0) | 2021.07.07 |
---|---|
[JAVA] super, super() (0) | 2021.06.28 |
[JAVA] Object클래스 (0) | 2021.06.24 |
[JAVA] 단일 상속(single inheritance) (0) | 2021.06.24 |
[JAVA]포함(composite) (0) | 2021.06.24 |