隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          import static和import的區別

          import
          static靜態導入是JDK1.5中的新特性。一般我們導入一個類都用 import
          com.....ClassName;而靜態導入是這樣:import static
          com.....ClassName.*;這里的多了個static,還有就是類名ClassName后面多了個 .*
          ,意思是導入這個類里的靜態方法。當然,也可以只導入某個靜態方法,只要把 .*
          換成靜態方法名就行了。然后在這個類中,就可以直接用方法名調用靜態方法,而不必用ClassName.方法名的方式來調用。

          這種方法的好處就是可以簡化一些操作,例如打印操作System.out.println(...);就可以將其寫入一個靜態方法print(...),在使用時直接print(...)就可以了。

          但是這種方法建議在有很多重復調用的時候使用,如果僅有一到兩次調用,不如直接寫來的方便






          example:







          在Java
          5中,import語句得到了增強,以便提供甚至更加強大的減少擊鍵次數功能,雖然一些人爭議說這是以可讀性為代價的。這種新的特性成為靜態導入。

          當你想使用static成員時,可以使
          用靜態導入(在API中的類和你自己的類上,都可以使用該特性)。下面是靜態導入前后的代碼實例:


          在靜態導入之前:



          1. public class TestStatic {

          2. public static void main(String[] args) {

          3. System.out.println(Integer.MAX_VALUE);

          4. System.out.println(Integer.toHexString(42));

          5. }
          6. }
          在靜態導入之后:




          1. import static java.lang.System.out;

          2. import static java.lang.Integer.*;


          3. public class TestStaticImport {

          4. public static void main(String[] args) {

          5. out.println(MAX_VALUE);

          6. out.println(toHexString(42));

          7. }
          8. }
          兩個類都產生相同的輸出:


          1. 2147483647
          2. 2a
          讓我們看一下使用靜態導入特性的代碼中將發生什么:

          1、雖然該特性通常稱為“靜態導入”,但語法必須是import
          static,后面跟你想導入的static成員的完全限定名稱,或者通配符。在本例中,我們在System類的out對象上進行靜態導入。


          2、在本例中,我們可能想使用java.lang.Integer類的幾個static成員。該靜態導入語句使用通配符來表達“我想在此類中的所有靜態成員上進行靜態導入”。


          3、現在我們終于看到靜態導入特性的好處!我們不必在System.out.println中鍵入System。太好了!另外,我們不必在Integer.MAX_VALUE中鍵入Integer。因此,在這行代碼中,我們能夠將快捷方式用于靜態方法和一個常量。


          4、最后,我們進行更多的快捷操作,這次針對Integer類的方法。


          關于該特性,我們已經有點兒諷刺意味兒了,但不僅我們是這樣的。我們不認為節省少量的擊鍵次數會讓代碼難于閱讀一點,但許多開發人員要求將它添加到語言中。


          下面是使用靜態導入的幾條原則:



          • 你必須說import static, 不能說static import。
          • 提防含糊不清的命名static成員。例如,如果你對Integer類和Long類執行了靜態導入,引用MAX_VALUE將導致一個編譯器錯誤,因為Integer和Long都有一個MAX_VALUE常量,并且Java不會知道你在引用哪個MAX_VALUE。

          • 你可以在static對象引用、常量(記住,它們是static 或final)和static方法上進行靜態導入。

          posted on 2012-04-22 15:24 hantai 閱讀(72) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长海县| 河间市| 广汉市| 正定县| 彰化县| 枣庄市| 虹口区| 中宁县| 巴中市| 宣恩县| 丹东市| 循化| 原平市| 靖边县| 吐鲁番市| 兴义市| 武宁县| 金平| 江源县| 宁远县| 明星| 历史| 武宁县| 铁岭县| 建昌县| 兴城市| 永年县| 红安县| 通道| 五莲县| 克拉玛依市| 出国| 青海省| 龙江县| 探索| 清新县| 东乌珠穆沁旗| 安陆市| 宿州市| 家居| 建始县|