原文连接: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
,能够不经过类名来拿到的是类中的成员(变量、方法)。