Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

import 문, static import문 본문

Java/객체지향

import 문, static import문

빌드이너프 2023. 6. 8. 14:11

import 문

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

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


Eclipse: auto import 문 단축키

윈도우: ctrl + shift + o

맥: cmd + shift + o

 

IntelliJ: auto import 문 단축키

자동으로 만들어줌

맥: opt + enter


해당 코드에서 import 문을 사용하면 java.util 부분을 생략할 수 있다

 

 

java.lang 패키지(기본 패키지)의 클래스는 import 하지 않고도 사용할 수 있다

String, Object, System, Thread ...

(*은 해당 패키지에 있는 모든 클래스를 의미함)

// import java.lang.*; // 생략 가능

class importTest {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

 

 

import 문 선언 방법

import 패키지명.클래스명;

// or

import 패키지명.*;

 

 

import 문은 package 문과 클래스 선언의 사이에 선언한다

package OOP; // 패키지 선언

import java.text.SimpleDateFormat; // import 문
import java.util.Date; // import 문
//import java.util.*; // import 문

public class PackageTest { // 클래스 정의
    public static void main(String[] args) {
        Date today = new Date();
//        java.util.Date today = new java.util.Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyy/mm/dd");
    }
}

 

 

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

따라서 import 문을 여러개 작성할 필요없이 *로 하나만 작성해도 무관하다

(*은 해당 패키지에 있는 모든 클래스를 의미함)

 

두 코드는 서로 의미가 다르다

(*은 해당 패키지에 있는 모든 클래스를 의미함)

import java.*; 의 의미는 java 패키지의 모든 클래스를 의미한다(즉, 패키지는 포함되지 않는다)

 

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

해당 코드에서 Date() 클래스가 sql 패키지인지 util 패키지인지 알 수 없다

이럴땐 클래스 앞에 패키지 이름을 적어줘야한다

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 멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다

import static java.lang.Math.random; // Math.random()만, 괄호 붙이지 않는다


public class importTest {
    public static void main(String[] args) {
        System.out.println(random()); // 0.12846865401783958

    }
}

 

import static java.lang.System.out; // System.out를 out만으로 참조가능
import static java.lang.Math.*; // Math 클래스의 모든 static 멤버
// import static java.lang.Math.random; // Math.random()만, 괄호 붙이지 않는다

public class importTest {
    public static void main(String[] args) {
        // System.out.println(Math.random());
        out.println(random()); // 0.12440018531065256

        // System.out.println(Math.PI);
        out.println(PI); // 3.141592653589793
    }
}

 

'Java > 객체지향' 카테고리의 다른 글

접근 제어자(access modifier)  (0) 2023.06.09
제어자(modifier)  (0) 2023.06.08
패키지(package)  (0) 2023.06.08
생성자 super()  (0) 2023.06.07
참조변수 super  (0) 2023.06.07