鍍金池/ 教程/ Java/ http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java參數(shù)傳遞
Java靜態(tài)內(nèi)部類
Java final關(guān)鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標(biāo)準(zhǔn)注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實現(xiàn)
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認值
Java異常拋出
Java不可變對象
Java類基礎(chǔ)
Java接口繼承
Java類方法
Java訪問級別
Java對象克隆
Java初始化塊
Java可變長度參數(shù)
Java接口字段
Java對象相等比較(Equals)
Java實例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向?qū)ο笤O(shè)計
Java對象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構(gòu)造函數(shù)
Java枚舉體
Java接口方法
Java this關(guān)鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內(nèi)部類成員
Java繼承和構(gòu)造函數(shù)
Java類實例化
Java內(nèi)部類類型
Java對象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內(nèi)部類
Java類成員訪問級別
Java異常處理教程
Java注解反射
Java構(gòu)造函數(shù)(構(gòu)造器)
Java導(dǎo)入(import語句的用法)

http://www.yiibai.com/java_object_oriented_design/java_import.ht

導(dǎo)入(import)聲明用于將任何類型導(dǎo)入編譯單元。導(dǎo)入(import)聲明出現(xiàn)在包聲明之后,第一個類型聲明之前。

有兩種類型的導(dǎo)入聲明:

  • 單類型導(dǎo)入聲明
  • 按需導(dǎo)入聲明

單類型導(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)入ClassTwoClassThree,以及從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)入多個類型。按需導(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)入到編譯單元中。靜態(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)入聲明的一般語法如下:

  • 單靜態(tài)import語句:
import static <package  name>.<type name>.<static member name>;
  • 按需靜態(tài)導(dǎo)入聲明-import語句:
    import static <package  name>>.<type  name>.*;
    
    Systemjava.lang包中的一個類,它有一個名為out的靜態(tài)變量。
    當(dāng)使用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ī)則。

  • 如果導(dǎo)入兩個具有相同簡單名稱的靜態(tài)成員,一個使用單靜態(tài)導(dǎo)入聲明,另一個使用靜態(tài)按需導(dǎo)入聲明,則使用單靜態(tài)import聲明導(dǎo)入的靜態(tài)成員優(yōu)先。
  • 使用單靜態(tài)導(dǎo)入聲明導(dǎo)入具有相同簡單名稱的兩個靜態(tài)成員是不允許的。
  • 如果使用單靜態(tài)導(dǎo)入聲明導(dǎo)入靜態(tài)成員,并且在同一類中存在具有相同名稱的靜態(tài)成員,則使用類中的靜態(tài)成員。