Java 導(dǎo)入

2018-01-18 11:54 更新

Java面向?qū)ο笤O(shè)計(jì) - Java導(dǎo)入


導(dǎo)入聲明用于將任何類型導(dǎo)入編譯單元。

導(dǎo)入聲明出現(xiàn)在包聲明之后,第一個(gè)類型聲明之前。

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

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

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

單類型導(dǎo)入聲明用于從包導(dǎo)入單個(gè)類型。它是形式。

import <fully qualified name of a type>;

以下導(dǎo)入聲明從com.w3cschool包導(dǎo)入Dog類:

import com.w3cschool.Dog;

單類型的導(dǎo)入聲明只從包中導(dǎo)入一個(gè)類型(一個(gè)類)。

要從包中導(dǎo)入多個(gè)類型,請(qǐng)為每個(gè)類型使用單獨(dú)的導(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.w3cschool.Dog jack;  // Uses  full qualified name for the   Dog  class
   }
}

以下代碼顯示如何使用單類型import語句將com.w3cschool.Dog類導(dǎo)入到其簡(jiǎn)單名稱。

修改后的Main類聲明如下:

import com.w3cschool.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類的簡(jiǎn)單名稱時(shí),就像

Dog  jack;

它將通過所有導(dǎo)入聲明將簡(jiǎn)單名稱解析為完全限定名稱。

當(dāng)它嘗試解析簡(jiǎn)單名稱Dog時(shí),它會(huì)找到導(dǎo)入聲明import com.java2s.Dog,它將導(dǎo)入Dog類。

它假定您打算在上面的語句中使用簡(jiǎn)單名稱Dog時(shí)使用com.java2s.Dog類。

編譯器用以下語句替換上面的語句:

com.w3cschool.Dog jack;

導(dǎo)入聲明允許您在代碼中使用類型的簡(jiǎn)單名稱,從而使您的代碼更具可讀性。

當(dāng)編譯代碼時(shí),編譯器用其完全限定名替換類型的簡(jiǎn)單名稱。

它使用導(dǎo)入聲明將類型的簡(jiǎn)單名稱轉(zhuǎn)換為其完全限定名稱。


按需導(dǎo)入聲明

按需導(dǎo)入聲明使用一個(gè)導(dǎo)入聲明從包導(dǎo)入多個(gè)類型。

按需導(dǎo)入聲明的語法是

import <package name>.*;

這里,包名稱后面跟著一個(gè)點(diǎn)和一個(gè)星號(hào)(*)。

例如,以下需要的import-on-demand聲明從com.java2s包導(dǎo)入所有類型:

import com.w3cschool.*;

您可以使用按需導(dǎo)入聲明重寫Main類的代碼。

import com.w3cschool.*;

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)格:?jiǎn)戊o態(tài)導(dǎo)入和靜態(tài) - 按需導(dǎo)入。

單靜態(tài)導(dǎo)入聲明從類型中導(dǎo)入一個(gè)靜態(tài)成員。靜態(tài)導(dǎo)入請(qǐng)求聲明導(dǎo)入類型的所有靜態(tài)成員。

靜態(tài)導(dǎo)入聲明的一般語法如下:

單靜態(tài)導(dǎo)入語句:

import static <package  name>.<type name>.<static member name>;

靜態(tài)導(dǎo)入需求聲明:

import static <package  name>>.<type  name>.*;

系統(tǒng)是java.lang包中的一個(gè)類,它有一個(gè)名為out的靜態(tài)變量。

當(dāng)你使用System.out時(shí),我們指的是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é)果。

java.lang包中的Math類有許多實(shí)用程序常量和靜態(tài)方法。

例如,它有一個(gè)類變量名為PI。

要使用Math類的任何靜態(tài)變量或方法,我們需要使用類名Math來限定它們。

例如,您可以將PI靜態(tài)變量稱為Math.PI,將sqrt()方法稱為Math.sqrt()。

我們可以使用以下static-import-on-demand聲明來導(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 = 6.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  2.0: " + sqrt(2.0));
  }
}

上面的代碼生成以下結(jié)果。

以下是關(guān)于靜態(tài)導(dǎo)入聲明的一些重要規(guī)則。

  • 如果導(dǎo)入具有相同簡(jiǎn)單名稱的兩個(gè)靜態(tài)成員,一個(gè)使用單靜態(tài)導(dǎo)入聲明,另一個(gè)使用靜態(tài)import-on-demand聲明,則使用單靜態(tài)import聲明導(dǎo)入的靜態(tài)成員優(yōu)先。
  • 使用單靜態(tài)導(dǎo)入聲明來導(dǎo)入具有相同簡(jiǎn)單名稱的兩個(gè)靜態(tài)成員是不允許的。
  • 如果使用單靜態(tài)導(dǎo)入聲明導(dǎo)入靜態(tài)成員,并且在同一類中存在具有相同名稱的靜態(tài)成員,則使用類中的靜態(tài)成員。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)