zoukankan      html  css  js  c++  java
  • 静态导入

    静态导入的作用: 简化书写。

    2 作用范围:静态导入可以作用一个类的所有静态成员。 

    静态导入的格式:

      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那时才存在的!

  • 相关阅读:
    Python 实践
    Keras实践
    NLP S实践
    Spark java 实践
    Seaborn数据探索可视化
    Linux实践
    Redis
    ML算法选型
    Elasticsearch issue
    牛客练习赛37
  • 原文地址:https://www.cnblogs.com/shadowdoor/p/6851873.html
Copyright © 2011-2022 走看看