minOS

자바의 정석 ch7-15, 16 import문, static import문 본문

TIL/남궁성의 자바의 정석

자바의 정석 ch7-15, 16 import문, static import문

minOE 2023. 12. 1. 21:54
728x90

ch7-15 import문

- 클래스를 사용할때 패키지 이름을 생략할 수 있다
- 컴파일러에게 클래스가 속한 패키지를 알려준다
class ImportTest{
   java.util.Date date = new java.util.Date();
}​

위의 코드는 import문을 통해

import java.util.Date;

class ImportTest{
 Date date = new Date();
}

 이렇게 작성할 수 있다.

-java.lang 패키지는 기본 패키지이기 때문에 이 패키지에 속한 클래스는 import하지 않고도 사용한다.
 기본 패키지 클래스 예시)String,Object,System,Thread

- import문 선언 방법

1)import 패키지명.클래스명;
2)import 패키지명.*;


- import문은 패키지문과 클래스 선언의 사이에 선언
    패키지 선언 -> 임포트문 -> 클래스
예시

// 패키지 선언
package com.example.myproject;

// 임포트문
import java.util.Random;

// 클래스 선언
public class SimpleJavaCode {

    // 메인 메서드
    public static void main(String[] args) {
        // 코드 내용
        System.out.println("Hello, Java!");

        // 예제로 Random 클래스 사용
        Random random = new Random();
        int randomNumber = random.nextInt(100);
        System.out.println("Random Number: " + randomNumber);
    }
}


- import문은 컴파일시 처리되므로 프로그램의 성능에 영향을 끼치지 않는다.

import 패키지명.클래스명; 보다 import 패키지명.*; 쓰는 것이 더 편리하다


-"*"의 의미는 해당 패키지의 모든 클래스를 뜻한다. 패키지는 포함하지 않는다.
  따라서 아래의 두 코드는 의미가 다르다

import java.util.*;
import java.text.*;

 

import java.*


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

import java.util.*; //java.util.Date
import java.sql.*;  //java.sql.Date

public class Main {
    public static void main(String[] args) {
       java.util.Date date = new java.util.Date();
    }
}

 

ch7-16 static import문

- static멤버(static변수,static메소드)를 사용할 때 클래스 이름을 생략할 수 있게 해준다.
 //*은 모든 static 변수와 static 메서드 의미
 import static java.lang.Integer.*; // Integer 클래스의 모든 static 메서드
 import static java.lang.Math.random; //Math.random만 의미
 import static java.lang.System.out; // System.out을 out으로만 참조가능​

예시
import static java.lang.System.out;
 import static java.lang.Math.*;

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.random());
        out.println(random());  // 정적 임포트를 사용하여 out 필드 직접 사용,Math 클래스의 random 메서드를 클래스 이름 없이 직접 사용


        System.out.println("Math PI:" + Math.PI );
        out.println("Math PI:" + PI);  // 정적 임포트를 사용하여 out 필드 직접 사용, Math 클래스의 정적 메서드와 상수를 클래스 이름 없이 직접 사용
    }
}

/* 출력값
0.5670803116178808
0.3120518596498614
Math PI:3.141592653589793
Math PI:3.141592653589793 */


728x90