Import

Import是一個及物動詞,意思是進口,輸入;引進[(+from)];含有...意思,意味著。

基本介紹

  • 中文名:進口;含義
  • 外文名:Import
  • 英音:[im'pɔ:t]
  • 美音:[ɪm'port]
  • 詞性:及物動詞
讀音,詞典解釋,及物動詞 vt.,名詞 n.,高級編程,導入類型,單類型導入,按需類型導入,工作原理,單類型導入,按需類型導入,結論,導入好處,

讀音

英音:[im'pɔ:t]美音:[ɪm'port]

詞典解釋

及物動詞 vt.

1. 進口,輸入;引進[(+from)]
We import a lot of cars from Japan.
我們從日本大量進口汽車。
2. 含有...意思,意味著
A high inflation rate imports hard times for consumers.
通貨膨脹率高意味著消費者日子難過。

名詞 n.

1. 進口,輸入[U]
The import of cotton goods went up sharply in 1981.
一九八一年棉織品的進口量急遽上升。
2. 進口商品[C][P1]
Electronic products are the major import from Japan.
從日本進口的主要物品是電子產品。
3. 意義,含義[(the) S]
The import of his remarks was that we should work harder.
他的演講的含義是我們要更努力。
I do not understand the import of her remarks.
我不懂她話中的含義。
4. 重要性,重大[U]
It's a matter of no great import.
這件事不重要。
This is a question of great import.
這是個十分重要的問題。

高級編程

在高級程式語言中,如果你想使用某個類或接口,那就要用import導入這個類,如在Java中編寫servlet,使用httpServlet,那就要在檔案的開頭(包之後)寫上,import javax.servlet.http.*;表示導入javax.servlet.http這個包中所有的檔案。

導入類型

單類型導入

單類型導入(single-type-import),例如import javaio.File;

按需類型導入

按需類型導入(type-import-on-demand),例如 import javaio.*;

工作原理

關於這兩種導入類型大家各有所愛,眾說紛紜。這裡分析一下這兩種導入類型的大致工作原理供大家參考。

單類型導入

單類型導入比較好理解,僅僅導入一個public類或者接口。而對於按需類型導入,有人誤解為導入一個包下的所有類,其實不然,看名字就知道,他只會按需導入,也就是說它並非導入整個包,而僅僅導入當前類需要使用的類。
既然如此是不是就可以放心的使用按需類型導入呢?非也,非也。因為單類型導入和按需類型導入對類檔案的定位算法是不一樣的。
java編譯器會從啟動目錄(bootstrap),擴展目錄(extension)和用戶類路徑下去定位需要導入的類,而這些目錄僅僅是給出了類的頂層目錄。編譯器的類檔案定位方法大致可以理解為如下公式:
頂層路徑名 \ 包名 \ 檔案名稱。class =絕對路徑
對於單類型導入很簡單,因為包名和檔案名稱都已經確定,所以可以一次性查找定位。

按需類型導入

對於按需類型導入則比較複雜,編譯器會把包名和檔案名稱進行排列組合,然後對所有的可能性進行類檔案查找定位。例如:
package com;
import javaio.*;
import java.util.*;
當你的類檔案中用到了File類,那么可能出現File類的地方如下:
1、File \\ File類屬於無名包,就是說File類沒有package語句,編譯器會首先搜尋無名包
2、com.File \\ File類屬於當前包
3、java.lang.File \\編譯器會自動導入java.lang包
4、java.io.File
5、java.util.File
需要注意的地方就是,編譯器找到javaio.File類之後並不會停止下一步的尋找,而要把所有的可能性都查找完以確定是否有類導入衝突。假設此時的頂層路徑有三個,那么編譯器就會進行3*5=15次查找。

結論

了解以上原理之後,我們可以得出這樣的結論:按需類型導入是絕對不會降低Java代碼的執行效率的,但會影響到Java代碼的編譯速度。

導入好處

查看JDK的原始碼就知道SUN的軟體工程師一般不會使用按需類型導入。因為使用單類型導入至少有以下兩點好處:
1.提高編譯速度。
2.避免命名衝突。(例如:當你import java.awt.*;import java.util.*後,使用List的時候編譯器將會出編譯錯誤)
當然,使用單類型導入會使用你的import語句看起來很長。

相關詞條

熱門詞條

聯絡我們