定义:
①被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来
②被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来
③被static修饰的变量、方法统一属于类的静态资源,是类实例之间共享的。
②被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来
③被static修饰的变量、方法统一属于类的静态资源,是类实例之间共享的。
把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面的三个好处:
1、不同的类有自己的静态资源,这可以实现静态资源分类。
2、避免重名。
3、避免静态资源类无限膨胀
1、不同的类有自己的静态资源,这可以实现静态资源分类。
2、避免重名。
3、避免静态资源类无限膨胀
static引出的三个问题以及解答:
1、静态方法能不能引用非静态资源?
不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。
2、静态方法里面能不能引用静态资源?
可以,因为都是类初始化的时候加载的,大家相互都认识。
3、非静态方法里面能不能引用静态资源?
可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。
不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。
2、静态方法里面能不能引用静态资源?
可以,因为都是类初始化的时候加载的,大家相互都认识。
3、非静态方法里面能不能引用静态资源?
可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。
静态块也是static关键字中一个重要应用:
静态块里面的代码只执行一次,而且只在初始化类的时候执行,一定要注意三点:
1.静态资源的加载顺序是严格按照静态资源的定义顺序来加载的。
2.静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。
3.静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次。
2.静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。
3.静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次。