即用任意一个实例对象改变成员变量值,其他实例对象的成员变量值也会同样改变
?
public class Student {
    static String school="CSU";
}
public class Test {
    public static void main(String[] args) {
        // 通过“类名.变量”名调用静态变量
        System.out.println("Student.school:" + Student.school);
        // 创建学生对象
        Student s1 = new Student();
        Student s2 = new Student();
        // 输出实例对象静态变量属性
        System.out.println("s1.school:" + s1.school + "-----"+"s2.school:" + s2.school);
        // 修改其中一个实例对象的静态变量属性
        s1.school = "HNU";
        // 输出实例对象静态变量属性
        System.out.println("s1.school:" + s1.school + "-----"+"s2.school:" + s2.school);
    }
}
对比
不使用static修饰成员变量

使用static修饰成员变量

使用static,该静态方法可直接通过 类名.方法名直接调用,不需要创建对象调用(static修饰的成员方法访问权限需要高于private)
注意:静态方法只能访问static修饰的成员,即静态成员,因为它们都放在静态存储区
举例(定义学生类和测试类)
?
public class Student1 {
    static void study() {
        System.out.println("学习中");
    }
}
?
public class Test1 {
    public static void main(String[] args) {
        Student1.study();
    }
?
静态代码块与类同时加载,只执行一次(类只执行一次)
举例(定义学生类与测试类)
public class Student2 {
    static{
        System.out.println("静态代码块");
    }
    
    public void showName (String name){
        System.out.println(name);
    }
}
?
public class Test2 {
    public static void main(String[] args) {
        Student2 s1=new Student2();
        Student2 s2=new Student2();
        s1.showName("张三");
        s2.showName("李四");
    }
原文:https://www.cnblogs.com/tianxiaocheng/p/15139247.html