美文网首页
Java基础之static关键字

Java基础之static关键字

作者: M_JCs | 来源:发表于2016-04-12 15:51 被阅读61次

    1、概念

    static关键字的中文含义为“静态”,表示“全局”,“静态”的意思,即被它修饰的变量或方法不依赖具体的对象,被类的所有实例共享,被static修饰的方法或变量可以在没有创建具体对象的时候通过类本身来进行调用。static关键字可以用来修饰类的成员变量和成员方法以及代码块。

    2、static修饰方法

    被static关键字修饰的方法称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象。在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是在非静态成员方法可以访问静态成员变量和调用静态成员方法的。
    另外,虽然类的构造方法没有显式的声明为static方法,但类的构造方法实际上也是静态方法。
    疑问:能否使用static关键字修饰abstract方法?

    3、static修饰变量

    被static关键字修饰的变量称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时进行初始化和内存分配。而非静态变量是对象所拥有的,在创建对象的时候进行初始化和内存分配,存在多个副本,各个对象拥有的副本互不影响。

    4、static修饰代码块

    被static关键字修饰的代码块称作静态代码块,static块可以置于类中的任何地方,类中可以有多个static块。JAVA虚拟机初次加载该类的时候,会按照static块的声明顺序来执行每个static块,并且只会执行一次,可以达到优化程序性能的目的。静态代码块可以出现在类中的任何地方,但不可以在方法内部定义静态代码块。利用静态代码块可以对static变量进行初始化。

    5、static修饰匿名内部类

    一般情况下static不用来修饰类。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(static class),也可以是非静态的。静态内部类在Android开发中使用较为广泛,以后会对相关静态内部类的知识点进行补充。

    6、总结

    一个成员变量或成员方法被static修饰与其的访问权限没有关系,被static修饰的成员变量或成员方法是独立于对象存在的,但不会改变成员变量或成员方法的访问权限,且在访问权限足够的前提下,所有的静态方法和静态变量都可以通过具体的对象进行访问(不推荐)。无论是变量,方法,还是代码块,只要用static修饰,就是在类被加载时就已经"准备好了",也就是可以被使用或者已经被执行。都可以脱离对象而执行。反之,如果没有static,则必须通过对象来访问。另外,static关键字不可以用来修饰局部变量。

    7、拓展

    static final用来修饰成员变量和成员方法,可简单理解为“全局常量”,对于变量,表示一旦给值就不可修改,并且通过类名可以访问。对于方法,表示子类不可以覆写该方法,只能继承,并且可以通过类名直接访问该方法。

    相关文章

      网友评论

          本文标题:Java基础之static关键字

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