静态导入
1 静态导入的作用: 简化书写。
2 作用范围:静态导入可以作用一个类的所有静态成员。
3 静态导入的格式:
import static 包名.类名.静态的成员
示例:
1 public static void main(String[] args) {
2 ArrayList<Integer> list = new ArrayList<>();
3 list.add(3);
4 list.add(44);
5 list.add(5);
6 list.add(11);
7 list.add(23);
8
9 }
现在,将它进行排序并求出其中最大值。用到Collections.sort方法和Collections.max方法
1 public static void main(String[] args) {
2 ArrayList<Integer> list = new ArrayList<>();
3 list.add(3);
4 list.add(44);
5 list.add(5);
6 list.add(11);
7 list.add(23);
8
9 //排序
10 Collections.sort(list);
11 System.out.println("最大值: " + Collections.max(list));
12
13 System.out.println("元素为:" + list);
14 }
结果为:
最大值: 44
元素为:[3, 5, 11, 23, 44]
那么,现在改为静态导入
(1) 先导入这条语句
import static java.util.Collections.*;
(2)将原代码中
Collections.sort()和Collections.max()
改为
sort()和max()
1 import static java.util.Collections.*;
2
3 public class Demo1 {
4 public static void main(String[] args) {
5 ArrayList<Integer> list = new ArrayList<>();
6 list.add(3);
7 list.add(44);
8 list.add(5);
9 list.add(11);
10 list.add(23);
11
12 //排序
13 sort(list);
14 System.out.println("最大值: " + max(list));
15
16 System.out.println("元素为:" + list);
17 }
18 }
结果一样是正确的:
最大值: 44
元素为:[3, 5, 11, 23, 44]
同样的,查API文档可知:
所以,我们也可以这样:
1 import static java.util.Collections.*;
2 import static java.lang.System.out;
3
4 public class Demo1 {
5 public static void main(String[] args) {
6 ArrayList<Integer> list = new ArrayList<>();
7 list.add(3);
8 list.add(44);
9 list.add(5);
10 list.add(11);
11 list.add(23);
12
13 //排序
14 sort(list);
15 out.println("最大值: " + max(list));
16
17 out.println("元素为:" + list);
18 }
19 }
但是,这里有一个问题:
如果,我自定义一个sort方法,那么会怎么样?
1 import static java.util.Collections.*;
2 import static java.lang.System.out;
3
4 public class Demo1 {
5 public static void main(String[] args) {
6 ArrayList<Integer> list = new ArrayList<>();
7 list.add(3);
8 list.add(44);
9 list.add(5);
10 list.add(11);
11 list.add(23);
12
13 //排序
14 sort(list);
15 out.println("最大值: " + max(list));
16
17 out.println("元素为:" + list);
18
19 }
20
21 public static void sort(ArrayList<Integer> list){
22 System.out.println("自定义类的 sort 方法");
23 }
24 }
输出结果:
自定义类的 sort 方法
最大值: 44
元素为:[3, 44, 5, 11, 23]
现在,main方法中调用的是自定义sort方法,而不是Collections.sort方法
4 静态导入要注意的事项:
如果静态导入的成员与本类的成员存在同名的情况下,那么默认使用本类的静态成员,如果需要指定使用静态导入的成员,那么需要在静态成员前面加上类名
此时,我再将 sort(list); 写成 Collections.sort(list);
看下结果:
最大值: 44
元素为:[3, 5, 11, 23, 44]
注意:静态导入时JDK1.5那时才存在的!