본문 바로가기
back-end/JAVA

27) import문, static import

by 모두의 향연 2021. 6. 7.
728x90
반응형

27) import문, static import문

 

1. import문

-클래스를 사용할 때 패키지 이름을 생략할 수 있다. 

-컴파일러에게 클래스가 속한 패키지를 알려준다.

import문

원래는 Data라는 클래스는 java-util패키지 안에 있는 클래스라서 java.util.Data라고 적는 게 올바른 표현이다.

하지만 모든 클래스를 이렇게 적다 보면 시간도 많이 걸리고 귀찮다.

그래서 import문을 선언하여 이 클래스가 어떤 패키지 안에 들어있는지 생략할 수 있다.

단축기 ctrl+shift+o를 사용하면 import문이 자동으로 생성된다.

똑같은 클래스가 있으면 어떤 패키지인지 선택하는 창이 나온다. 그럼 맞는 패키지를 선택하면 된다.

패키지 선택창

어? 근데 지금까지 String클래스는 패키지 이름을 매번 쓰지 않았죠?

-java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다(String, Object, System, Thread...)

java.lang패키지는 자바언어의 기본 패키지이다. 핵심 클래스를 다 거기에 넣어놨기 때문에 굳이 import문을 사용하지 않는다. 

import문에서 '*'표시는 '모든 클래스'를 의미한다. java.lang은 기본 패키지이기 때문에 import문은 생략 가능하다.

 

 

2. import문의 선언

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

import선언

 

-import문은 패키지문과 클래스 선언 사이에 선언한다.

import문의 위치

 

-import문은 컴파일 시에 처리되므로 프로그램 성능에 영향 없다.

import jav.util.Calendar;

import jav.util.Date;

import jav.util.ArrayList;

이 세문장을 

import java.util.*;로 한 문장으로 바꿀 수 있다.

간편한 import문 선언방법

 

이렇게 쓰면 모든 클래스를 가져오기 때문에 성능이 떨어지지 않냐는 말이 있는데 그렇지 않다.

하긴 명확하게 쓰는 패키지만 선언하면 정확히 어떤 클래스인지 알 수 있는 장점이 있긴 하다.

 

-다음의 두 코드는 서로 의미가 다르다.

첫 번째 코드는 java패키지에 있는 util패키지 안의 모든 클래스를 의미하고,

두 번째 코드는 java패키지에 있는 text패키지 안의 모든 클래스를 의미한다.

세 번째 코드는 java패키지에 있는 모든 클래스를 의미한다(패키지는 포함 X)

 

-이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지명을 붙여줘야 한다.

쓰고자하는 패키지명을 명확하게

 

 

3. static import문

-static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해 준다.

static import문 선언

첫 번째 import문(멤버 모두 사용): Integer클래스에 있는 모든 static멤버를 선언하는 것. 모든 static멤버는 static변수와 static메서드이다. 원래 static멤버를 사용할 때 앞에 클래스 이름을 붙여야 하는데 없이 사용 가능하게 해주는 것이다.

두 번째 import문(메서드 사용): Math클래스에 있는 random() 메서드를 사용할 때 클래스명 없이 사용 가능하게 해주는 것. 대신에 random뒤에 괄호를 붙이지 않는다는 점 주의하자. 

세 번째 import문(변수사용): System클래스의 static변수인 out인데 클래스 System 없이 out으로만 사용 가능하다

예를 들면)

 

 

4. import문을 쓰는 이유

나중에 코드를 짜면 점점 길어집니다. 그럼 클래스를 쓰는 것조차도 복잡해져요.

코드를 짧게 할 수 있는 장점이 있지만, 그래도 클래스 이름을 써야 어떤 건지 명확하게 알 수 있으니 import문 없이 클래스 이름까지 쓰는 연습을 하시길 바랍니다.

 

 

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다*

728x90
반응형