Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) import 문과 static import 문의 차이점 완벽 정리

자바에서 import 문은 특정 패키지의 클래스와 인터페이스를 가져올 때 사용합니다. import 문을 사용하면 패키지 경로까지 포함된 완전한 클래스 이름(Fully Qualified Name)을 쓸 필요가 없고, 짧은 클래스 이름만으로 바로 접근할 수 있습니다. 반면 static import특정 클래스나 패키지의 static 멤버를 가져오는 기능입니다. static import를 사용하면 static 멤버에 접근할 때 클래스 이름을 붙일 필요 없이 곧바로 사용할 수 있습니다.

import 문이란?

  • 다른 패키지에 있는 클래스나 메서드에 접근하려면 패키지명을 포함한 완전한 이름을 사용하거나 import 문을 활용해야 합니다.
  • 클래스나 메서드는 반드시 접근 가능한 상태여야 합니다. 접근 가능 여부는 접근 제어자(access modifier)에 따라 결정됩니다.
  • private 멤버는 같은 클래스 내부에서만 접근할 수 있습니다. 따라서 완전한 이름이나 import 문을 사용해도 private 멤버에는 접근할 수 없습니다.
  • java.lang 패키지는 자바가 자동으로 코드에 포함시켜 주기 때문에 별도로 import 하지 않아도 됩니다.

import 문 예제

import java.util.Vector;
public class ImportDemo {
    public ImportDemo() {
        // import 키워드로 가져왔기 때문에 패키지 경로 없이 바로 사용 가능
        Vector v = new Vector();
        v.add("Tutorials");
        v.add("Point");
        v.add("India");
        System.out.println("Vector values are: "+ v);

        // 패키지를 import 하지 않았기 때문에 전체 패키지 경로로 참조
        java.util.ArrayList list = new java.util.ArrayList();
        list.add("Tutorix");
        list.add("India");
        System.out.println("Array List values are: "+ list);
    }
    public static void main(String arg[]) {
        new ImportDemo();
    }
}

실행 결과

Vector values are: [Tutorials, Point, India]
Array List values are: [Tutorix, India]

위 예제처럼 Vector는 import 했기 때문에 클래스 이름만으로 생성할 수 있지만, ArrayList는 import 하지 않았기 때문에 java.util.ArrayList처럼 전체 경로를 직접 작성해야 합니다.

static import 문이란?

  • static import는 static 멤버들을 가져와서 클래스 이름 없이 바로 사용할 수 있게 해줍니다.
  • static import 선언에는 두 가지 형태가 있습니다. 특정 static 멤버 하나만 가져오는 단일 static import(single static import)와, 클래스의 모든 static 멤버를 한꺼번에 가져오는 static import on demand(* 사용) 방식입니다.
  • static import는 Java 5 버전부터 도입되었습니다.
  • static import의 대표적인 장점은 타이핑량을 줄여주고 코드 재사용성을 높인다는 점입니다.

static import 예제

import static java.lang.System.*; // static import 사용
public class StaticImportDemo {
    public static void main(String args[]) {
        // System.out을 쓰지 않고 out으로 바로 호출 가능
        out.println("Welcome to Tutorials Point");
    }
}

실행 결과

Welcome to Tutorials Point

두 문법의 핵심 차이 비교

구분import 문static import 문
가져오는 대상클래스, 인터페이스static 필드, static 메서드
생략 가능한 부분패키지 이름클래스 이름
사용 예new Vector()out.println()
도입 시기자바 초기 버전부터Java 5 이후

정리하면, 일반 import는 클래스 자체를 간결하게 사용하기 위한 문법이고, static import는 클래스 이름 없이 static 멤버를 호출하기 위한 문법입니다. 다만 static import를 과도하게 사용하면 해당 멤버가 어느 클래스에 속했는지 파악하기 어려워 가독성이 떨어질 수 있으므로, 자주 사용하는 상수나 유틸리티 메서드 위주로 적절히 활용하는 것이 좋습니다.