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聲明導入的靜態成員優先。
  • 使用單靜態導入聲明導入具有相同簡單名稱的兩個靜態成員是不允許的。
  • 如果使用單靜態導入聲明導入靜態成員,並且在同一類中存在具有相同名稱的靜態成員,則使用類中的靜態成員。