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
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    重新学习C#系列-02.静态类、静态字段和静态方法
    Appcan学习笔记(3)——tabview 静止页面左右滑动切换
    Appcan学习笔记(2)——子页面调用父页面的方法
    Appcan学习笔记(1)——父页面调用子页面的方法
    重新学习C#系列-01.方法参数
    WP8.1 Runtime应用利用HttpClient初始化数据的一些考虑
    C# socket通讯使用域名的方法
    RSA私钥加密
    RSA公钥加密
    13位时间戳转换成标准时间C#代码
  • 原文地址:https://www.cnblogs.com/binbingg/p/13597494.html
Copyright © 2011-2022 走看看