匯入(import
)宣告用於將任何型別匯入編譯單元。匯入(import
)宣告出現在包宣告之後,第一個型別宣告之前。
有兩種型別的匯入宣告:
單型別匯入宣告用於從包匯入單個型別。 它的形式如下 -
import <fully qualified name of a type>;
以下匯入宣告從com.yiibai
包匯入Dog
類:
import com.yiibai.Dog;
單一型別的匯入宣告只從包中匯入一個型別(一個類)。要從包中匯入多個類(或型類),請為每個型別使用單獨的匯入宣告。
以下匯入宣告從pkg1
包匯入ClassOne
,從pkg2
包匯入ClassTwo
和ClassThree
,以及從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>.*;
System
是java.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
宣告匯入的靜態成員優先。