static
静态使用方法:
是一个修饰符,用于修饰成员(成员变量、成员函数)
当成员被静态修饰后就多了一种调用方式,除了可以被对象调用外还可以用类名.静态成员的方法调用。
注意:
1.静态方法只能访问静态成员
非静态方法既可以访问静态方法也可以访问非静态方法。
2.静态方法中不可以出现this、super关键字。
因为静态方法优先于对象存在所以不可以出现this、super。
静态特点:
1:随着类的加载而被加载
2:优先于对象存在
3:被所有对象共享
4:可以直接类名.静态成员的方法调用
静态方法的有弊:
利:将对象的共享数据进行单独存储,节省内存空间。
弊:1生命周期过长
2访问有局限性(静态不能访问非静态)
3主函数是静态的
什么时候使用静态成员变量和函数
1:静态成员变量
当数据中出现共享数据时,改数据需要被静态所修饰,
对象中的特有数据要定义成非静态存在于堆内存中。
2:静态函数
当功能内部没有访问非静态数据,那么该功能可以定义成静态函数
通常工具类中定义的都是静态方法。
静态代码块
特点:类一被加载就执行,且只执行一次,优先于主函数执行。用于给类进行初始化
- class StaticCode
- {
- //静态代码块 给类初始化
- static{
- System.out.println("a");
- }
- //构造代码块 给所有对象进行初始化
- {
- System.out.println("b");
- }
- //构造函数 给创建的对象进行初始化
- StaticCode(){
- System.out.println("c");
- }
- StaticCode(int x){
- System.out.println("d");
- }
- public static void show(){
- System.out.println("show run");
- }
- }
- class Demo04_StaticCode
- {
- public static void main(String[] args){
- new StaticCode(4);//输出结果:a b d
- }
- }
复制代码
|
|