• Java static关键字


    static 关键字可用于变量、方法、代码块,表示某个特定的成员只属于某个类本身,而不是该类的某个对象。

    1、静态变量

    静态变量也叫类变量,它属于一个类,而不是这个类的对象。

    public class Man {
        private String name;
        private int age;
        public static int num;
    
        public Man(String name, int age) {
            this.name = name;
            this.age = age;
            num++;
        }
    }
    

    其中,num 被称为静态变量,它有别于 name 和 age 这两个成员变量,因为它前面多了一个修饰符 static。

    这意味着无论这个类被实例化对象多少次,静态变量的值都会在所有实例化对象中共享。

    Man man = new Man("张三", 32);
    Man man2 = new Man("李四",35);
    
    System.out.println(Man.num);
    

    打印结果 num 的值为2,而不是 1。

    静态变量和成员变量有着很大的不同,成员变量的值属于某个对象,不同的对象之间,值是不共享的;但静态变量不是的,它可以用来统计对象的数量,因为它是共享的。就像上面例子中的 num,创建一个对象的时候,它的值为 1,创建两个对象的时候,它的值就为 2。

    • 由于静态变量属于一个类,所以不能通过对象引用来访问,而应该直接通过类名来访问;

    • 不需要初始化类就可以访问静态变量

    2、静态方法

    静态方法也叫类方法,它和静态变量类似,属于一个类,而不是这个类的对象

    public static void setNum(int num) {
        Man.num = num;
    }
    

    setNum() 就是一个静态方法,它由 static 关键字修饰

    回忆一下,我们在这之间其实已经用了很多次静态方法,只是那时候不清楚而已。

    简单小结一下:

    • 抽象方法不能是静态方法

    • 静态方法不能使用 this 和 super 关键字

    • 静态方法可以访问所有其他静态方法和静态变量

    • 静态方法无法访问方法和成员变量

    3、静态代码块

    静态代码块可以用来初始化静态变量,尽管静态方法也可以在声明的时候直接初始化,但有些时候,我们需要多行代码来完成初始化。

    public class man{
        public static int age;
        public static String name;
    
       // 静态初始化块
        static {
            age = 32;
            name = "张三“;
        }
    }
    

    静态类成员的注意事项:

    • 类的静态方法中不能调用非静态方法和非静态成员变量(也不能使用 this 和 super )

    • 类的非静态方法中可以调用静态方法和静态成员变量

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    自省改过
    c语言学习教程1之预定义代码
    tqdm进度条管理
    React-i18next切换中英文
    React怎样实现点击其他地方隐藏弹出的菜单
    遍历对象再取值,获得新值
    Web 用户体验设计提升指南
    antd vue form
    echarts 内容显示值在图中显示,不显示交互效果,只是静态图
    element-ui中el-table根据浏览器的缩放自适应宽度
  • 原文地址:https://www.cnblogs.com/binbingg/p/13597494.html
Copyright © 2020-2023  润新知