💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 静态导入(static imports) 在本节,你将会学习到关于静态导入的知识。如何使用静态导入。还有会看到一些例子,如何到如自定义的静态成员。所以让我们开始吧。 我已经创建了一个Project命名为 StaticImportsExample还有一些包和新的类。你可以暂停视频,先创建一个project。 或者也可以使用旧的project,然后每节课创建新的类。 ### 作用 所以静态导入(static import)是用来导入静态成员的。通常这些成员会是常量(constant)或者是方法(method) 。 我们会以Math类作为例子研究一下。 静态导入的主要作用是,你不用指明类名。也就是那个常量或者是方法所在的类,不需要指明。 当你使用一些静态方法,或者是静态变量。有时候静态变量会过度使用。尤其是在大型应用。太多静态导入的话,有时候容易忘记某个变量或方法是导入自哪个类的。 那么让我们打印一些Math方法里面的常量,你不用担心 `static` 关键字,这个后面我们会详细讲解的。 首先,我们创建以下代码: ```java package io.zwt; public class StaticImportsExample { public static void main(String[] args) { int min = Math.min(5, 7); System.out.println("min= ", min); System.out.println(Math.PI); } } ``` 上面的两个println 语句就打印了两个整数其中较小值和常量 $\pi$ 的值。 接下来,我们开始使用静态导入语句 ```java package io.zwt; import static java.lang.Math.*; public class StaticImportsExample { public static void main(String[] args) { int min = Math.min(5, 7); System.out.println("min= ", min); System.out.println(Math.PI); } } ``` 这时候,import 语句会变灰色,因为没有用到它。 我们可以移除min方法前的Math. 这时候我们就有使用min方法,import 语句起作用了。 ```java package io.zwt; import static java.lang.Math.*; public class StaticImportsExample { public static void main(String[] args) { int min = min(5, 7); System.out.println("min= ", min); System.out.println(PI); } } ``` 对于PI这个常量,也做同样的操作。 这样每次我们要使用Math类里面的某个静态方法,或者是常量,就不需要在前面写 Math. 了。 如果我们使用 Ctrl + Shift + O 优化导入,那么 IntelliJ 会将原理的星号导入,变成两个静态导入。就像下面这样: ```java package io.zwt; import static java.lang.Math.PI; import static java.lang.Math.min; public class StaticImportsExample { public static void main(String[] args) { int min = min(5, 7); System.out.println("min= ", min); System.out.println(PI); } } ``` 因为这个Math类里面还有很多的静态方法,我们不需要导入所有的静态方法,只需要导入用到的。 ### System.out 另一个使用静态导入的例子是 System.out. 每次想要打印一些内容的时候,不需要总是输入System.out 只需要敲 out. 注意到这个 out 是 static final 类型的变量,定义在 System 这个类里面。 所以如果我们再添加一个静态导入语句(然后移除 System.) ```java package io.zwt; import static java.lang.Math.PI; import static java.lang.Math.min; import static java.lang.System.out; public class StaticImportsExample { public static void main(String[] args) { int min = min(5, 7); out.println("min= ", min); out.println(PI); } } ``` 关于静态导入的考察点,主要是在是否正确地使用了静态导入语句,静态导入语句主要是用来导入静态成员。然后普通的导入语句是用来导入类的。 静态成员可以是变量或者是方法。 当使用普通的import 语句,你不可以导入两个同名的类,同样的规则也适用于静态导入 static import。你不能导入两个同名的变量,或者两个同名的方法。 现在让我们创建另外一个类,那么我就创建一个新的Java 类,命名为 Config 在这个类里面,我会创建一些静态常量。例如 ```java package io.zwt; public class Config { public static final String NAME = "myName"; public static final int MAX_COLUMN_COUNT = 5; public static void printConfig() { System.out.println("name= " + NAME + " columnCount= " + MAX_COLUMN_COUNT); } } ``` 静态方法可以不用创建实例,直接调用。 现在我们回到 StaticImportsExample 这个类,开始使用静态导入我们的Config类里边的静态成员。 ```java package io.zwt; import static java.lang.Math.PI; import static java.lang.Math.min; import static java.lang.System.out; import static io.zwt.Config.*; public class StaticImportsExample { public static void main(String[] args) { int min = min(5, 7); out.println("min= ", min); out.println(PI); // 静态导入了这个方法 printConfig(); // 也可以打印静态变量 out.println("name= " + NAME); out.println("columnCount= " + MAX_COLUMN_COUNT); } } ``` 在大型程序里边,最好不要导入太多静态变量和静态方法。因为太多了很难清楚这些是从哪里导入的。