共找到2條詞條名為import的結果 展開
- 計算機程序語言
- 英文單詞
import
計算機程序語言
import[計算機程序語言] 在高級編程語言中,如果你想使用某個類或介面,那就要用import導入這個類,如在Java中編寫servlet,使用httpServlet,那就要在文件的開頭(包之後)寫上,import javax.servlet.http.\
1.單類型導入(single-type-import)例如import java.io.File;
import
2.按需類型導入(type-import-on-demand)例如 import java.io.*;
關於這兩種導入類型大家各有所愛,眾說紛紜。這裡分析一下這兩種導入類型的大致工作原理供大家參考。
單類型導入比較好理解,僅僅導入一個public類或者介面。而對於按需類型導入,有人誤解為導入一個包下的所有類,其實不然,看名字就知道,他只會按需導入,也就是說它並非導入整個包,而僅僅導入當前類需要使用的類。既然如此是不是就可以放心的使用按需類型導入呢?非也。因為單類型導入和按需類型導入對類文件的定位演演算法是不一樣的。
java編譯器會從啟動目錄(bootstrap),擴展目錄(extension)和用戶類路徑下去定位需要導入的類,而這些目錄僅僅是給出了類的頂層目錄。編譯器的類文件定位方法大致可以理解為如下公式:
頂層路徑名 \ 包名 \ 文件名。class = 絕對路徑
對於單類型導入很簡單,因為包名和文件名都已經確定,所以可以一次性查找定位。
對於按需類型導入則比較複雜,編譯器會把包名和文件名進行排列組合,然後對所有的可能性進行類文件查找定位
例如:package com;import java.io.*;import java.util.*;
(圖)import[計算機程序語言]
1、File \\ File類屬於無名包,就是說File類沒有package語句,編譯器會首先搜索無名包
2、com.File \\ File類屬於當前包
3、java.lang.File \\編譯器會自動導入java.lang包
4、java.io.File
5、java.util.File
需要注意的地方就是,編譯器找到java.io.File類之後並不會停止下一步的尋找,而要把所有的可能性都查找完以確定是否有類導入衝突。假設此時的頂層路徑有三個,那麼編譯器就會進行3*5=15次查找。
了解以上原理之後,我們可以得出這樣的結論:按需類型導入是絕對不會降低Java代碼的執行效率的,但會影響到Java代碼的編譯速度。
查看JDK的源代碼就知道SUN的軟體工程師一般不會使用按需類型導入。因為使用單類型導入至少有以下兩點好處:
1.提高編譯速度。
2.避免命名衝突。(例如:當你import java.awt.*;import java.util.*后,使用List的時候編譯器將會出編譯錯誤)
當然,使用單類型導入會使用你的import語句看起來很長。
(圖)import[計算機程序語言]
<!--
@import url("styles.css");
-->
為什麼使用@import
大部分使用@import方式的人是因為舊的瀏覽器是不支持@import方式的,這意味著我們可以使用@import來引入只讓現代瀏覽器解析的CSS樣式.
使用以下代碼可以使IE6及以下的瀏覽器無法解析該CSS(IE6以下的屬於年久失修在這裡略去方法)
@import url(../style.css) screen;另一個主要的原因就是當你的網頁需要引入幾個外部CSS文件時。你可以使用link引入一個CSS,然後在這個CSS文件中用@import方式引入其它幾個CSS文件。這樣看起來更容易管理。