import static和import的區別

import static靜態導入是JDK1.5中的新特性。通常咱們導入一個類都用 import com.....ClassName;而靜態導入是這樣:import static com.....ClassName.*;這裏的多了個static,還有就是類名ClassName後面多了個 .* ,意思是導入這個類裏的靜態方法。固然,也能夠只導入某個靜態方法,只要把 .* 換成靜態方法名就好了。而後在這個類中,就能夠直接用方法名調用靜態方法,而沒必要用ClassName.方法名 的方式來調用。 

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

可是這種方法建議在有不少重複調用的時候使用,若是僅有一到兩次調用,不如直接寫來的方便 java

 
 
example:

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

當你想使用static成員時,可使用靜態導入(在API中的類和你本身的類上,均可以使用該特性)。下面是靜態導入先後的代碼實例:spa

在靜態導入以前:對象

  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.  
  4. public class TestStaticImport { 
  5.     public static void main(String[] args) { 
  6.         out.println(MAX_VALUE); 
  7.         out.println(toHexString(42)); 
  8.     } 
  9. }
兩個類都產生相同的輸出:
  1. 2147483647 
  2. 2a
讓咱們看一下使用靜態導入特性的代碼中將發生什麼:

一、雖然該特性一般稱爲「靜態導入」,但語法必須是import static,後面跟你想導入的static成員的徹底限定名稱,或者通配符。在本例中,咱們在System類的out對象上進行靜態導入。ci

二、在本例中,咱們可能想使用java.lang.Integer類的幾個static成員。該靜態導入語句使用通配符來表達「我想在此類中的全部靜態成員上進行靜態導入」。開發

三、如今咱們終於看到靜態導入特性的好處!咱們沒必要在System.out.println中鍵入System。太好了!另外,咱們沒必要在Integer.MAX_VALUE中鍵入Integer。所以,在這行代碼中,咱們可以將快捷方式用於靜態方法和一個常量。編譯器

四、最後,咱們進行更多的快捷操做,此次針對Integer類的方法。io

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

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

  • 你必須說import static, 不能說static import。
  • 提防含糊不清的命名static成員。例如,若是你對Integer類和Long類執行了靜態導入,引用MAX_VALUE將致使一個編譯器錯誤,由於Integer和Long都有一個MAX_VALUE常量,而且Java不會知道你在引用哪一個MAX_VALUE。
  • 你能夠在static對象引用、常量(記住,它們是static 或final)和static方法上進行靜態導入。
相關文章
相關標籤/搜索