清水鱼:static 关键字

2021年1月15日 18点热度 0条评论 来源: /▼)守望巅峰(′~‵)

static关键字

(1)static修饰符

可以修饰属性,我们叫静态变量或类变量。
可以修饰方法,我们叫静态方法或类方法。
可以修饰代码块,我们叫静态块。

不使用static修饰的属性,我们叫实例变量。
不使用static修饰的方法,我们叫实例方法。
不使用static修饰的代码块,我们叫普通块。

同义词:实例==对象
我们把创建对象的过程,叫实例化。

(2)成员的调用
类变量和类方法属于类,可以使用类名直接调用
实例变量和实例方法属于对象,可以使用对象名直接调用;
所有类变量和类方法可以共享给对象使用,所以可以通过对象名调用类变量和类方法。

综上所述:对象可以调任何属性和方法,类只能调用类变量和类方法。

		public class te { 
    public int a=3;
    public static int b=6;
    public static void ss(){ 
        System.out.println("我是静态方法");

    }
    public void zz(){ 
        System.out.println("我是实例方法");
    }
}

	public class jie01 { 
    public static void main(String[] args) { 
        new StaticBlock();
        te st=new te();
        System.out.println(st.a);
        te.ss();
        st.ss();
// System.out.println(te.a);类只能调用类方法和类变量,如何调用实例方法和实例变量,
    }
}

      

大家访问的类变量和类方法,都是同一个变量和方法!!!
每个对象调用的实例变量和实例方法,都是每一个对象独有的!!!

(3)方法之间的调用

实例方法中可以直接调用任何属性和方法。
类方法中只能直接调用类变量和类方法,不能直接调用实例变量和实例方法。
如果在类方法中想要调用实例变量和实例方法,需要指定对象。

public class StaticDemo { 
	public  int  a;
	public  static  int  b;
	
	public  void  test1() { 
		System.out.println(11);
		test2();
		test11();
		System.out.println(a);
		System.out.println(b);
	}
	
	public  static  void  test2() { 
		System.out.println(22);
		
// test11();
// System.out.println(a);
		StaticDemo  sd=new  StaticDemo();
		sd.test11();
		sd.a=9;
		
		test22();
		System.out.println(b);
	}
	
	
	public  void  test11() { 
		System.out.println(1111);
	}
	
	public  static  void  test22() { 
		System.out.println(2222);
	}
	
}

(4)静态块

使用static修饰的代码块,我们叫静态块。
它和属性、方法、构造器并列。

静态块中只能直接访问静态资源,如果需要访问实例成员需要指定对象。
代码块在调用构造器的时候执行。

public class jie01 { 
    public static void main(String[] args) { 
        new StaticBlock();
    }
}
class StaticBlock { 
    {    final  int a=1;
        System.out.println("普通代码块:"+a);
    }
    static { 
        int b=2;

        System.out.println("静态代码块:"+b);
    }
    public StaticBlock() { 

        int b=3;
        System.out.println("构造代码块:"+b);
    }
}
public class jie01 { 
    public static void main(String[] args) { 
        new StaticBlock();
        new StaticBlock();

    }
}

执行过程:

先执行静态块;
在执行普通代码块;
最后执行构造器方法体。

注意:静态代码块有且仅在第一次访问该类时执行一次,后面就不在执行了。
执行结果:

静态代码块:2
普通代码块:1
构造代码块:3
普通代码块:1
构造代码块:3

    原文作者:/▼)守望巅峰(′~‵)
    原文地址: https://blog.csdn.net/qq_41284819/article/details/110822725
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。