美文网首页
static修饰符用法

static修饰符用法

作者: Levi_moon | 来源:发表于2021-02-15 11:14 被阅读0次

    Java中,static修饰符是比较重要的知识点,也是Java工程师面试时,问的比较多的问题。因此,对static修饰符知识点的学习及整理,还是很有必要的。

    static修饰符总的来说有四种作用:修饰字段或方法、修饰代码块、静态导入包、构造静态内部类

    一、修饰字段或方法

    1.修饰字段

    当使用static修饰字段时,那么该字段就为静态字段,在每个类中只有一个这样的字段。而其他非静态的字段,在每个对象中都有自己的一个副本。

    例如:
    在学生Student类中有两个字段,分别是:学校id——schoolId(静态字段)、学生id——studentId(非静态字段)。每个Student对象都有自己的学生id,但是这些学生都有同一个学校id
    也就是说,如果有1000个学生对象,则有1000个学生id,分别对应每一个学生对象。但是,只有一个静态字段学校id,即使没有学生对象,静态字段学校id也是存在的。

    静态变量使用的较少,但是静态常量使用的较多。例如,JavaMath类中定义的Π静态常量。

    public static final double PI = 3.14159265358979323846;
    

    2.修饰方法

    static修饰的方法,称为静态方法。静态方法是不用实例化对象就可以执行的方法。调用普通的方法时,首先需要实例化对象,然后再调用方法;调用静态方法时,不需要实例化对象,可以直接调用方法。

    例如:
    Math类中的max方法,传入两个整型数值,返回最大值,表达式为:

    Math.max(int a, int b)
    

    那么什么时候会使用静态方法呢?

    • 方法只需要访问类的静态字段时
    • 调用方法不需要实例化对象时

    二、修饰代码块

    如果类的静态字段需要比较复杂的初始化代码时,可以使用静态代码块。
    将代码放在一个块中,并将该块标记为static,那么就构造了静态代码块。

    例如:

    //随机生成一个小于1000的随机整数
    private static int id = 1;
    static{
      Random random = new Random();
      id = random.nextInt(1000);
    }
    

    三、静态导入包

    在使用静态字段或方法时,需要在字段或方法前加类名,例如使用数学类中比较最大值的方法时,需要在max方法前加Math类名,当使用静态字段或方法较少时,这样没有问题,但是如果使用的静态字段或方法较多时,就可以在类文件头部静态导入包。

    例如:
    在没有静态导入包前,使用最大值比较函数,是这样写:

    //头部没有静态引入Math类
    Math.max(1,2);
    
    import static java.lang.Math.*;
    ……
    //头部静态引入了Math类
    max(1,2);
    

    通过静态引入类,可以使得代码更清晰,代码量也减少了。


    四、构造静态内部类

    当一个内部类只是为了隐藏在一个类内部,并不需要内部类有外部类的引用时,可以将内部类声明为static

    要点:

    • 只要内部类不需要访问外部类对象,那么就应该使用静态内部类
    • 与常规内部类不同,静态内部类可以有静态字段和方法
    • 在接口中声明的内部类自动是staticpublic

    相关文章

      网友评论

          本文标题:static修饰符用法

          本文链接:https://www.haomeiwen.com/subject/whzlxltx.html