導(dǎo)入(import
)聲明用于將任何類型導(dǎo)入編譯單元。導(dǎo)入(import
)聲明出現(xiàn)在包聲明之后,第一個類型聲明之前。
有兩種類型的導(dǎo)入聲明:
單類型導(dǎo)入聲明用于從包導(dǎo)入單個類型。 它的形式如下 -
import <fully qualified name of a type>;
以下導(dǎo)入聲明從com.yiibai
包導(dǎo)入Dog
類:
import com.yiibai.Dog;
單一類型的導(dǎo)入聲明只從包中導(dǎo)入一個類型(一個類)。要從包中導(dǎo)入多個類(或型類),請為每個類型使用單獨的導(dǎo)入聲明。
以下導(dǎo)入聲明從pkg1
包導(dǎo)入ClassOne
,從pkg2
包導(dǎo)入ClassTwo
和ClassThree
,以及從pkg3
包導(dǎo)入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
}
}
當(dāng)編譯器在語句中遇到Dog
類的簡單名稱時,如以下聲明 -
Dog jack;
它將通過所有導(dǎo)入聲明將簡單名稱解析為完全限定名稱。當(dāng)它嘗試解析簡單名稱Dog
時,它會找到導(dǎo)入聲明import com.java2s.Dog
并將導(dǎo)入Dog
類。
在上面的語句中使用簡單名稱Dog
時,實際指定使用com.yiibai.Dog
類。編譯器用以下語句替換上面的語句:
com.yiibai.Dog jack;
導(dǎo)入聲明允許在代碼中使用類型的簡單名稱,從而使代碼更具可讀性。當(dāng)編譯代碼時,編譯器用其完全限定名替換類型的簡單名稱。它使用導(dǎo)入聲明將類型的簡單名稱轉(zhuǎn)換為其完全限定名稱。
按需導(dǎo)入聲明使用一個導(dǎo)入聲明從包導(dǎo)入多個類型。按需導(dǎo)入聲明的語法是 -
import <package name>.*;
這里,包名稱后面跟著一個點(.
)和一個星號(*
)。例如,以下按需導(dǎo)入聲明從 com.yiibai
包導(dǎo)入所有類型:
import com.yiibai.*;
可以使用按需導(dǎo)入聲明重寫Main
類的代碼。
import com.yiibai.*;
public class Main {
public static void main(String[] args) {
Dog jack; // Use simple name of the Dog class
}
}
靜態(tài)導(dǎo)入聲明將類型的靜態(tài)成員(變量/方法)導(dǎo)入到編譯單元中。靜態(tài)導(dǎo)入聲明有兩種風(fēng)格:單靜態(tài)導(dǎo)入和按需靜態(tài)導(dǎo)入。
單靜態(tài)導(dǎo)入聲明從類型中導(dǎo)入一個靜態(tài)成員。 按需靜態(tài)導(dǎo)入聲明導(dǎo)入類型的所有靜態(tài)成員。
靜態(tài)導(dǎo)入聲明的一般語法如下:
import
語句:import static <package name>.<type name>.<static member name>;
import
語句:import static <package name>>.<type name>.*;
System
是java.lang
包中的一個類,它有一個名為out
的靜態(tài)變量。System.out
時,指的是System
類中的靜態(tài)變量。可以使用靜態(tài)導(dǎo)入聲明從System
類導(dǎo)入out
靜態(tài)變量,如下所示:import static java.lang.System.out;
以下代碼導(dǎo)入System
類的out
靜態(tài)變量。
import static java.lang.System.out;
public class StaticImportTest {
public static void main(String[] args) {
out.println("Hello static import!");
}
}
上面的代碼生成以下結(jié)果。
Hello static import!
java.lang
包中的Math
類有許多實用程序常量和靜態(tài)方法。
例如,它有一個類變量名為PI
,就是那個圓周率。要使用Math
類中的任何靜態(tài)變量或方法,則需要使用類名Math
來限定它們。
例如,可以將PI
靜態(tài)變量稱為Math.PI
,將sqrt()
方法稱為Math.sqrt()
??梢允褂靡韵掳葱桁o態(tài)導(dǎo)入聲明來導(dǎo)入Math
類的所有靜態(tài)成員:
import static java.lang.Math.*;
以下代碼通過導(dǎo)入其靜態(tài)成員來演示使用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));
}
}
上面的代碼生成以下結(jié)果。
Value of PI is: 3.141592653589793
Radius of circle: 9.9
Area of circle: 307.90749597833565
Square root of 8.0: 2.8284271247461903
以下是關(guān)于靜態(tài)導(dǎo)入聲明的一些重要規(guī)則。
import
聲明導(dǎo)入的靜態(tài)成員優(yōu)先。