static关键字
1.静态域,如果将域定义为静态的,则这个实力域数据将会被本类的所有对象共享,它属于类不属于任何独立的对象。
2.静态常量,即可以通过类名直接访问。
3.静态方法,不能访问本类实例域,因为它不能操作对象,但是他可以操作静态域;可以类名直接调用静态方法。
4.main方法是一种静态方法,是因为程序启动时并没有对象,可以直接调用main方法。
下面是static的使用方法总结:
1. 随着类的加载而加载(例如:main方法)
2. 优先于对象存在
3. 被类的所有对象共享,例如:某班的学生共用一个班级编号
4. 如果某个成员变量是被类的所有对象共享的,那么它就应该定义为静态。
5. 可以通过类名调用(建议使用类名调用),其实它本身也可以通过对象名调用(但是没有意义,因为它不属于任何一个独立的对象)。
6. 静态修饰的内容一般我们称其为:与类相关的,类成员
静态的注意事项:
在静态方法中没有this关键字:因为静态是随着类的加载而加载,this是随着对象的创建而存在,所以静态比对象先存在
静态方法只能访问静态的成员变量和静态成员方法(就是最上面的第3点)
非静态的可以访问一切!
类中内容执行顺序:
程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。并且只在类加载时执行一次!
静态初始化块只在类加载时执行,且只会执行一次(某些设计可以这样做),同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。