<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    內(nèi)蒙古java團(tuán)隊(duì)

    j2se,j2ee開發(fā)組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Java包導(dǎo)入分析

    Posted on 2010-07-02 09:57 帥子 閱讀(271) 評(píng)論(0)  編輯  收藏 所屬分類: j2ee技術(shù)專區(qū)
    java中有兩種包的導(dǎo)入機(jī)制,總結(jié)如下:

      單類型導(dǎo)入(single-type-import),例如import java.io.File;

      按需類型導(dǎo)入(type-import-on-demand),例如 import java.io.*;

      關(guān)于這兩種導(dǎo)入類型大家各有所愛,眾說紛紜。這里分析一下這兩種導(dǎo)入類型的大致工作原理供大家參考。

      單類型導(dǎo)入比較好理解,僅僅導(dǎo)入一個(gè)public類或者接口。而對(duì)于按需類型導(dǎo)入,有人誤解為導(dǎo)入一個(gè)包下的所有類,其實(shí)不然,看名字就知道,他只會(huì)按需導(dǎo)入,也就是說它并非導(dǎo)入整個(gè)包,而僅僅導(dǎo)入當(dāng)前類需要使用的類。

      既然如此是不是就可以放心的使用按需類型導(dǎo)入呢?非也,非也。因?yàn)閱晤愋蛯?dǎo)入和按需類型導(dǎo)入對(duì)類文件的定位算法是不一樣的。java編譯器會(huì)從啟動(dòng)目錄(bootstrap),擴(kuò)展目錄(extension)和用戶類路徑下去定位需要導(dǎo)入的類,而這些目錄進(jìn)僅僅是給出了類的頂層目錄。編譯器的類文件定位方法大致可以理解為如下公式:

      頂層路徑名 \ 包名 \ 文件名.class = 絕對(duì)路徑

      對(duì)于單類型導(dǎo)入很簡(jiǎn)單,因?yàn)榘骱臀募家呀?jīng)確定,所以可以一次性查找定位。

      對(duì)于按需類型導(dǎo)入則比較復(fù)雜,編譯器會(huì)把包名和文件名進(jìn)行排列組合,然后對(duì)所有的可能性進(jìn)行類文件查找定位。例如:


      package?com;
      import?java.io.*;
      import?java.util.*;

      當(dāng)你的類文件中用到了File類,那么可能出現(xiàn)File類的地方如下

      File \\ File類屬于無名包,就是說File類沒有package語(yǔ)句,編譯器會(huì)首先搜索無名包

      com.File \\ File類屬于當(dāng)前包

      java.lang.File \\編譯器會(huì)自動(dòng)導(dǎo)入java.lang包

      java.io.File

      java.util.File

      需要注意的地方就是,編譯器找到j(luò)ava.io.File類之后并不會(huì)停止下一步的尋找,而要把所有的可能性都查找完以確定是否有類導(dǎo)入沖突。假設(shè)此時(shí)的頂層路徑有三個(gè),那么編譯器就會(huì)進(jìn)行3*5=15次查找。

      注意:如果在查找完成后,編譯器發(fā)現(xiàn)了兩個(gè)同名的類,那么就會(huì)報(bào)錯(cuò)。要?jiǎng)h除你不用的那個(gè)類,然后再編譯。

      了解以上原理之后,我們可以得出這樣的結(jié)論:按需類型導(dǎo)入是絕對(duì)不會(huì)降低Java代碼的執(zhí)行效率的,但會(huì)影響到Java代碼的編譯速度。

      查看JDK的源代碼就知道SUN的軟件工程師一般不會(huì)使用按需類型導(dǎo)入。因?yàn)槭褂脝晤愋蛯?dǎo)入至少有以下兩點(diǎn)好處:

      1。提高編譯速度。

      2。避免命名沖突。(例如:當(dāng)你import java.awt.*;import java.util.*后,使用List的時(shí)候編譯器將會(huì)出編譯錯(cuò)誤)

      當(dāng)然,使用單類型導(dǎo)入會(huì)使用你的import語(yǔ)句看起來很長(zhǎng)。

    主站蜘蛛池模板: 久久青青成人亚洲精品| 学生妹亚洲一区二区| 国产精品久久免费| 亚洲av成人一区二区三区在线播放 | 久久精品亚洲日本波多野结衣| 一本色道久久综合亚洲精品高清| 无码人妻丰满熟妇区免费| 亚洲熟女综合色一区二区三区| 亚洲色一色噜一噜噜噜| 4虎永免费最新永久免费地址| 美女视频黄a视频全免费网站色 | 无套内谢孕妇毛片免费看看| 亚洲日韩区在线电影| 亚洲AV永久无码精品一区二区国产| 久久WWW免费人成—看片| 亚洲综合国产成人丁香五月激情 | 久久91亚洲精品中文字幕| 在线精品免费视频| 十九岁在线观看免费完整版电影| 久久亚洲中文字幕无码| 久久亚洲美女精品国产精品| 亚洲国产成人久久综合野外| 日本在线高清免费爱做网站| 两个人看的www免费| 国产亚洲精品成人久久网站 | 真实国产乱子伦精品免费| 欧亚一级毛片免费看| 激情亚洲一区国产精品| 久久精品国产亚洲网站| 免费成人av电影| 男人的好免费观看在线视频| 色www永久免费| 瑟瑟网站免费网站入口| 亚洲人成网亚洲欧洲无码| 在线观看亚洲人成网站| 亚洲熟妇无码乱子AV电影| 免费人成在线观看网站品爱网日本| 久久久久久精品成人免费图片 | 国产成人免费手机在线观看视频| 两性刺激生活片免费视频| 99re在线精品视频免费|