Java中的static搞懂了吗?
1、答案:
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访制问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

2、static关键字使用场景:
1.修饰类(只能是内部类)
2.修饰方法
3.修饰变量
4.修饰代码块

3、关于类的初始化顺序:
父类静态变量>父类静态代码块>子类静态变量>子类静态代码块>父类普通变量>父类普通代码块>父类构造器>子类普通变量>子类普通代码块>子类构造器

4、static关键字的特点:
1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量.
2.static修饰的成员被所有的对象共享.
3.static优先于对象存在,因为static的成员随着类的加载就已经存在.
4.static修饰的成员多了一种调用方式,可以直接被类名所调用,(类名.静态成员).

5、成员变量和静态变量的区别:
1.生命周期的不同:
成员变量随着对象的创建而存在随着对象的回收而释放.
静态变量随着类的加载而存在随着类的消失而消失.
2.调用方式不同:
成员变量只能被对象调用.
静态变量可以被对象调用,也可以用类名调用.(推荐用类名调用)
3.别名不同:
成员变量也称为实例变量.
静态变量称为类变量.
4.数据存储位置不同:
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.

6、静态使用时需要注意的事项:
1.静态方法只能访问静态成员.(非静态既可以访问静态,又可以访问非静态)
2.静态方法中不可以使用this或者super关键字.
3.主函数是静态的
