原文連接:https://www.geeksforgeeks.org/static-import-java/java
通常引入類的方式:import java.lang.Math.*;
翻譯
靜態引入類的方式:import static java.lang.Math.*;
code
ClassName.method();
的方式去調用類中的靜態方法;method();
便可使用靜態方法。如下2張圖能夠清晰的查看。對象
在Java中,靜態引入的方式是jkd1.5開始有的。有了靜態引入功能,就能夠直接拿到類中的靜態成員,不須要類名或者任何對象。
好比,咱們常常使用Math
類中的sqrt()
方法,使用方式爲:Math.sqrt()
,可是經過使用靜態引入後,咱們就能夠直接使用sqrt()
方法了。
根據SUN公司的微系統,這種寫法會提升代碼可讀性與效率。然而某些程序大佬說,這種寫法會令人迷惑,對於程序沒有什麼好處。
若是沒有明確的要求,咱們不該該使用靜態引入。
直接上代碼:blog
// Java程序說明 // 調用事先定義的方法 // 不使用靜態引入 class Geeks { public static void main(String[] args) { System.out.println(Math.sqrt(4)); System.out.println(Math.pow(2, 2)); System.out.println(Math.abs(6.3)); } } --- Output: 2.0 4.0 6.3 // 使用靜態引入 import static java.lang.Math.*; class Test2 { public static void main(String[] args) { System.out.println(sqrt(4)); System.out.println(pow(2, 2)); System.out.println(abs(6.3)); } } Copy CodeRun on IDE Output: 2.0 4.0 6.3
System
是java.lang package
中的類,out
存在因而System
類中的靜態變量。經過靜態引入的方式,咱們能夠不用類名去調用它。// Java程序說明 // 發生歧義 // 靜態引入 import static java.lang.Integer.*; import static java.lang.Byte.*; class Geeks { public static void main(String[] args) { out.println(MAX_VALUE); } } Output: Error:Reference to MAX_VALUE is ambigious
說明:在上面的代碼中,咱們試圖去拿MAX_VALUE
的值,可是每一個在包裝類中預先生命的元數據類型都包含了MAX_VALUE
。這裏,咱們同時引入了Integer
和Byte
類,而且試圖企業訪問靜態變量,可是當編譯器看到兩個導入語句的時候,必定不知道去調用Integer
和Byte
其中哪一個的靜態變量。所以編譯器拋了個錯誤,說引用哪一個變量是不明確的。接口
import
,引入的是包中的類或者接口;而使用static import
,能夠不經過類名來拿到的是類中的成員(變量、方法)。