static:
1.static翻译为"静态"
2.所有static关键字修饰的都是类相关的,类级别的
3.所有static修饰的,都采用"类名."的方式访问。可以使用"引用."的方式,但不建议。(困惑)
4.static修饰的变量、方法为静态变量、静态方法
变量的分类:
变量在方法体中是局部变量,在方法体外为成员变量。
成员变量又可分为实例变量和静态变量。
static所修饰的变量在类加载的时候就初始化加载运行了。
什么时候变量声明为实例,什么时候为静态?
如果这个类型的所有对象的某个属性值都一样的,不建议定义为实例变量,浪费内存空间。定义为静态变量只会在方法去中保留一份,节省空间。
空引用调用静态变量时实际上还是使用的类名调用的方式。所以空指针异常只在"空指针"访问"实例"的时候才会出现。
什么时候定义实例方法?
当方法体中直接访问了实例变量,这个方法一定是实例方法。工具类一般是静态方法。(不需要new对象,直接采用类名调用,极其方便)
静态代码块:
语法:
static{
java语句;
java语句;
}
1.静态代码块在类加载时执行,且只执行一次。
2.在main方法执行前执行。
3.一般按照自上而下的顺序执行。
(使用情况少,如当需要将类加载的日志信息记录时,可以写在静态代码块中)
实例语句块:
语法:
{
java语句;
java语句;
}
在构造方法执行之前自动执行,也是SUN公司准备的特殊实际,叫对象创建时机。