Java中static作用

发布时间 2023-10-09 17:25:36作者: 杂音77

Java中static作用

  • static修饰的对象,它先于任何的对象出现。在程序最开始启动(JVM初始化)的时候,就会为static方法分配一块内存空间,成为静态区,属于这个类。而非static方法,必须在类实例化的时候,才会给分配内存空间,在实例化对象的时候JVM在堆区分配一个具体的对象,this指针指向这个对象。也就是说,this指针是指向堆区中的类的对象,而static域不属于this指向的范围所在,所以不能用实例对象调用。

  • static 修饰变量

    static修饰的变量叫静态变量或类变量,静态变量只创建一次,JVM只为其分配一次内存空间,可以用类名直接访问。

    public class Test {
        public static void main(String[] args) {
            System.out.println(A.n);//可以直接用类名调用
    
        }
    }
    class A{
        static int n = 9;
    
    }
    
  • static 修饰方法

    1. 静态方法也可以直接使用类名调用,任何实例对象也可以调用,静态方法中不能用this和super关键字(静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字),也不能直接访问所属类的实例变量和实例方法(静态的不能调用非静态的)
    2. static方法独立于任何实例,所以static方法必须被实现,而不能是抽象的方法(abstract)

    static 代码块

    static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。