zoukankan      html  css  js  c++  java
  • 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
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    CF598E Chocolate Bar 题解 动态规划
    CF864E Fire 题解 背包DP
    用 程序 解决 windows防火墙 的 弹窗 问题
    windbg 使用与技巧
    bat 下 字符串拆分 类似 split 可以使用 for /f delims
    vs2013 在按F5调试时,总是提示 “项目已经过期”的解决方案
    代理与反向代理
    关于维护用户状态的一致性
    视频的裁剪后缩放功能。
    通信协议的设计
  • 原文地址:https://www.cnblogs.com/binbingg/p/13597494.html
Copyright © 2011-2022 走看看