import
- 클래스를 사용할 때 패키지 이름을 생략할 수 있다.
- 컴파일러에게 클래스가 속한 패키지를 알려준다.
- 이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지명을 붙여줘야 한다
해당 코드에서 Date() 클래스가 sql 패키지인지 util 패키지인지 알 수 없다
이럴땐 클래스 앞에 패키지 이름을 적어줘야한다
import java.sql.*;
import java.util.*;
public class ImportTest {
public static void main(String[] args) {
java.util.Date today = new java.util.Date();
}
}
import 선언 방법
import 패키지명.클래스명;
import 패키지명.*;
static import
- 코드를 짧게 만들수 있다.
- 알아보지 못하는 경우도 생길 수 있기 때문에 필요할 때만 사용
- static 멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다
static import 선언 방법
import static java.lang.System.out;
import static java.lang.Math.*;
public class importTest {
public static void main(String[] args) {
out.println(random());
out.println(PI);
}
}
와일드카드 사용 논점
성능에 미치는 영향
- 와일드카드는 컴파일 시간 성능이 저하
- 와일드카드는 런타임 성능에 전혀 영향 없다
사용 지양이유
- 와일드카드 사용 없이 import를 선언하면 명확하게 인지할 수 있어 실수를 줄일 수도 있다.
- 다른 패키지에 동일한 클래스가 존재할 수도 있다.
결론
- 컴파일러가 일을 하는 것이고, 바이트 코드로 비교해보면 둘다 동일한 바이트 코드를 가진다.
- Java에서 와일드카드는 런타임 성능에 전혀 영향을 미치지 않지만 컴파일 시간 성능은 약간 영향을 받을 수 있다.
- 클린코딩이라는 측면에서는 상황에 따라 활용해야한다.