java中static修改成员变量和函数和其他使用

一、通过static修饰的成员变量初始化只会初始化一次

//静态变量初始化只会初始化一次
public class zuishuai {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //double[] my = new double[14];
        people a = new people();
        a.num+=1;
        System.out.println("现已创建人数:"+a.num);
        a.num+=1;
        System.out.println("现已创建人数:"+a.num);
        a.num+=1;
        System.out.println("现已创建人数:"+a.num);
    }

}
class people{
    public static int num;
    public people() {
        num=0;
    }
}
/*
输出:
 现已创建人数:1
现已创建人数:2
现已创建人数:3
*/

静态代码块中:

当new一个类对象时,static修饰的成员变量首先被初始化,随后是普通成员,最后调用Person类的构造方法完成初始化。也就是说,在创建对象时,static修饰的成员会首先被初始化

并且,当再次new该类的对象时,static修饰的类成员不会被再次初始化,在程序运行过程中,static只会在第一次new时被初始化

二、static修饰的方法可以无需实例化直接调用

//静态static修饰的方法可以无需实例化直接调用
public class zuishuai {
    
    public static void main(String[] args) {
        people a = new people();
        people.opetor();
        //people.opetor1(); 直接调用会报错
        a.opetor1();
    }

}
class people{
    public static int num;
    public people() {
        num=0;
    }
    public static void opetor() {
        System.out.println("执行静态方法");
    }
    public void opetor1() {
        System.out.println("执行非静态方法");
    }
}

三、在把这个类导入其他java文件时,可以不用实例化直接调用static修饰的方法

主类:

package qmh;
import qmh.people;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        people.opetor();
    }

}

people类:

package qmh;

class people{
    public static int num;
    public people() {
        num=0;
    }
    public static void opetor() {
        System.out.println("执行静态方法");
    }
    public void opetor1() {
        System.out.println("执行非静态方法");
    }
}

结果输出:

执行静态方法

原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/13646300.html