Java匯入(import語句的用法)


匯入(import)宣告用於將任何型別匯入編譯單元。匯入(import)宣告出現在包宣告之後,第一個型別宣告之前。

有兩種型別的匯入宣告:

  • 單型別匯入宣告
  • 按需匯入宣告

單型別匯入宣告

單型別匯入宣告用於從包匯入單個型別。 它的形式如下 -

import <fully qualified name of a type>;

以下匯入宣告從com.yiibai包匯入Dog類:

import com.yiibai.Dog;

單一型別的匯入宣告只從包中匯入一個型別(一個類)。要從包中匯入多個類(或型類),請為每個型別使用單獨的匯入宣告。

以下匯入宣告從pkg1包匯入ClassOne,從pkg2包匯入ClassTwoClassThree,以及從pkg3包匯入ClassFour,如以下程式碼:

import pkg1.ClassOne; 
import pkg2.ClassTwo; 
import pkg2.ClassThree; 
import pkg3.ClassFour;

以下程式碼使用Dog類的完全限定名稱。

public  class  Main{
   public static  void  main(String[]  args)  {
      com.yiibai.Dog jack;  // Uses  full qualified name for the   Dog  class
   }
}

修改後的Main類宣告如下:

import com.yiibai.Dog; // Import   the   Dog  class

public  class  Main {
   public static  void  main(String[]  args)  {
      Dog  jack; // Use simple name of  the   Dog  class
   }
}

當編譯器在語句中遇到Dog類的簡單名稱時,如以下宣告 -

Dog  jack;

它將通過所有匯入宣告將簡單名稱解析為完全限定名稱。當它嘗試解析簡單名稱Dog時,它會找到匯入宣告import com.java2s.Dog 並將匯入Dog類。

在上面的語句中使用簡單名稱Dog時,實際指定使用com.yiibai.Dog類。編譯器用以下語句替換上面的語句:

com.yiibai.Dog jack;

匯入宣告允許在程式碼中使用型別的簡單名稱,從而使程式碼更具可讀性。當編譯程式碼時,編譯器用其完全限定名替換型別的簡單名稱。它使用匯入宣告將型別的簡單名稱轉換為其完全限定名稱。

按需匯入宣告

按需匯入宣告使用一個匯入宣告從包匯入多個型別。按需匯入宣告的語法是 -

import <package name>.*;

這裡,包名稱後面跟著一個點(.)和一個星號(*)。例如,以下按需匯入宣告從 com.yiibai 包匯入所有型別:

import com.yiibai.*;

可以使用按需匯入宣告重寫Main類的程式碼。

import com.yiibai.*;

public  class  Main {
    public static  void  main(String[]  args)  {
        Dog  jack; // Use simple name of  the   Dog  class
    }
}

靜態匯入宣告

靜態匯入宣告將型別的靜態成員(變數/方法)匯入到編譯單元中。靜態匯入宣告有兩種風格:單靜態匯入和按需靜態匯入。
單靜態匯入宣告從型別中匯入一個靜態成員。 按需靜態匯入宣告匯入型別的所有靜態成員。
靜態匯入宣告的一般語法如下:

  • 單靜態import語句:
import static <package  name>.<type name>.<static member name>;
  • 按需靜態匯入宣告-import語句:
    import static <package  name>>.<type  name>.*;
    
    Systemjava.lang包中的一個類,它有一個名為out的靜態變數。
    當使用System.out時,指的是System類中的靜態變數。可以使用靜態匯入宣告從System類匯入out靜態變數,如下所示:
import static  java.lang.System.out;

以下程式碼匯入System類的out靜態變數。

import static  java.lang.System.out;

public class  StaticImportTest  {
    public static  void  main(String[]  args)  {
        out.println("Hello static  import!");
    }
}

上面的程式碼生成以下結果。

Hello static  import!

java.lang包中的Math類有許多實用程式常數和靜態方法。
例如,它有一個類變數名為PI,就是那個圓周率。要使用Math類中的任何靜態變數或方法,則需要使用類名Math來限定它們。
例如,可以將PI靜態變數稱為Math.PI,將sqrt()方法稱為Math.sqrt()。可以使用以下按需靜態匯入宣告來匯入Math類的所有靜態成員:

import static  java.lang.Math.*;

範例

以下程式碼通過匯入其靜態成員來演示使用Math類。參考如下程式碼 -

import static java.lang.Math.PI;
import static java.lang.Math.sqrt;
import static java.lang.System.out;

public class Main {
  public static void main(String[] args) {
    double radius = 9.9;
    double area = PI * radius * radius;

    out.println("Value of  PI  is: " + PI);
    out.println("Radius of  circle: " + radius);
    out.println("Area of  circle: " + area);
    out.println("Square root of  8.0: " + sqrt(8.0));
  }
}

上面的程式碼生成以下結果。

Value of  PI  is: 3.141592653589793
Radius of  circle: 9.9
Area of  circle: 307.90749597833565
Square root of  8.0: 2.8284271247461903

以下是關於靜態匯入宣告的一些重要規則。

  • 如果匯入兩個具有相同簡單名稱的靜態成員,一個使用單靜態匯入宣告,另一個使用靜態按需匯入宣告,則使用單靜態import宣告匯入的靜態成員優先。
  • 使用單靜態匯入宣告匯入具有相同簡單名稱的兩個靜態成員是不允許的。
  • 如果使用單靜態匯入宣告匯入靜態成員,並且在同一類中存在具有相同名稱的靜態成員,則使用類中的靜態成員。