欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

清水鱼:static 关键字

程序员文章站 2022-03-21 07:49:12
static关键字(1)static修饰符可以修饰属性,我们叫静态变量或类变量。可以修饰方法,我们叫静态方法或类方法。可以修饰代码块,我们叫静态块。不使用static修饰的属性,我们叫实例变量。不使用static修饰的方法,我们叫实例方法。不使用static修饰的代码块,我们叫普通块。同义词:实例==对象我们把创建对象的过程,叫实例化。(2)成员的调用类变量和类方法属于类,可以使用类名直接调用;实例变量和实例方法属于对象,可以使用对象名直接调用;所有类变量和类方法可以共享给对象使用...

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

相关标签: # Java基础 java