static关键字
1.static存在的意义
1.static可以创建独立于具体域对象的变量或者方法,这个方法或者变量不与包含它所对应的类的任何对象包含在一起。也就是说即使没有创建对象,也可以调用这个变量或者方法
2.static可以用来形成静态代码块来优化程序性能。static块可以存放在类的任何一个地方,当类进行加载时,会按照static块的顺序来进行加载,并且只会加载一次。
3.static可以为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建对象。(一个static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象都有一个存储空间)
2.static的特点
1.被static修饰的变量或者方法独立于该类的任何对象,可以理解成这些变量或者方法不属于任何一个实例对象,是被类中所有对象所共享。
2.在一个类第一次加载的时候,就会加载static修饰的部分,而且只在类第一次使用时加载并进行初始化。
3.static变量值在第一次加载的时候就分配了空间,以后创建对象时不会再进行重新分配空间,但是可以赋值。
4.被static修饰的变量或者方法是优先于对象的,也就是说,即使你没有创建对象,也可以调用static修饰的变量或者方法。
3.static的应用场景
3.1修饰成员变量
成员变量是可以被类中所有对象所共享的,当一个成员变量被static所修饰,那么这个变量就成了静态变量。
静态变量和实例变量有点区别,首先没有被static修饰的成员变量叫做实例变量,实例变量属于这个类的实例对象,也就是说,可以通过创建对象来对它进行调用。两者之间的区别是,静态变量不属于任何实例对象,它是属于类的。在类加载的时候进行分配一次内存空间。实例变量是每次创建对象时,都会为成员变量分配内存空间。
3.2修饰成员方法
被static修饰的方法叫做静态方法,其实main方法就是一个静态方法。静态方法可以直接被调用,也就是类名.方法名()的方式。
3.3静态代码块
也就是在类中被static包裹的一部分代码,形如static{}
输出:
可以看出:静态代码块只初始化一次。
3.4静态内部类
1.静态内部类不可以访问外部类非静态成员。
2.静态内部类不需要创建外部类的对象就可以访问。
3.静态内部类可以有多种权限访问类型。
输出:

浙公网安备 33010602011771号