Java Static静态关键字理解

来源:互联网 发布:刺客信条枭雄 知乎 编辑:程序博客网 时间:2024/05/23 15:41

static变量或者方法,不会和它所在的类的任何对象实例联系在一起。即使从未创建该类的对象实例,仍能够访问该static变量或者方法(只要在类的名字后面加点号(.)运算符即可)。


static变量:

声明为static的变量实质上就是全局变量(static变量在类加载的时候初始化,而且只被初始化一次。整个JVM中只有一份)。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。在程序中任何对象对静态变量做修改,其他对象看到的是修改后的值。因此类变量可以用作计数器。


static方法:

static方法的限制:1、它们仅能调用其他的static 方法,只能访问static数据(不能直接访问非静态变量和非静态方法)。2、它们不能以任何方式引用this 或super。


static代码块:

用static去修饰类里面的一个独立的代码块,称为静态代码块。静态代码块在类第一次被加载的时候执行,而且只执行一次。静态代码块没有名字,因此不能显式调用,而只有在类加载的时候由虚拟机来调用。它主要用来完成一些初始化操作。


类加载:
JVM在第一次使用一个类时,会到classpath所指定的路径里去找这个类所对应的字节码文件, 并读进JVM保存起来,这个过程称之为类加载。
可见,无论是变量,方法,还是代码块,只要用static修饰,就是在类被加载时就已经"准备好了",也就是可以被使用或者已经被执行。都可以脱离对象而执行。反之,如果没有static,则必须通过对象来访问。


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



0 0
原创粉丝点击