• 类变量/静态变量


    类变量

    引入类变量

    案例引出类变量:
    有几个小孩在玩游戏,不时会有其他的小孩加入一起玩。怎么统计一共有多少小孩在玩?

    按照现有的知识,可以设计一个小孩类,定义一个加入的方法。然后在主程序类的main方法中,定义一个变量,每当有小孩加入时就自增一次。最后输出这个变量即可得知

    public class test {
        public static void main(String[] args) {
            int couunt = 0;
            chils c1 = new chils("小明");
            c1.join();
            couunt++;
            chils c2 = new chils("小红");
            c2.join();
            couunt++;
            chils c3 = new chils("小王");
            c3.join();
            couunt++;
            System.out.println("共有"+couunt+"个小孩加入了游戏");
    
        }
    }
    class chils{
        String name;
        public chils(String name) {
            this.name = name;
        }
    
        public void join(){
            System.out.println(name+"加入了游戏");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    输出:
    小明加入了游戏
    小红加入了游戏
    小王加入了游戏
    共有3个小孩加入了游戏

    但是这样写的话,变量是在主程序中定义的。不符合面向对象编程的思想。
    所以引出了类变量:在类中用static修饰的变量,也叫静态变量。
    类变量并不会像其他普通类成员变量一样,每当实例化不同的对象就会有单独的空间。
    类变量是这个类所有对象共享的一个变量。
    因此这个类的所有对象都可以对类变量,进行修改。也就是说类变量是所有当前类对象共有的。
    static类变量,在类加载的时候就生成了。
    因此借助这个特性,可以应用到上面的问题当中,使更具有OOP编程的思想。

    public class test {
        public static void main(String[] args) {
            chils c1 = new chils("小明");
            c1.join();
            c1.couunt++;
            chils c2 = new chils("小红");
            c2.join();
            c2.couunt++;
            chils c3 = new chils("小王");
            c3.join();
            c3.couunt++;
            System.out.println("共有"+chils.couunt+"个小孩加入了游戏");
        }
    }
    class chils{
        static int couunt;
        String name;
        public chils(String name) {
            this.name = name;
        }
    
        public void join(){
            System.out.println(name+"加入了游戏");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    内存图表示:
    在这里插入图片描述
    通俗的说:类变量/静态变量,是chils类的共享变量,不会独立出去。就像公共浴室,谁都可以去这里洗澡,但是你的私人浴室就只能你自己洗澡。

    什么是类变量

    • 类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,都是去访问同一个地址的空间,同理任何一个该类的对象修改它时,修改的也是一个变量,如上图所示。

    怎么定义类变量

    定义语法:
    访问修饰符 static 数据类型 变量名;//访问修饰符和static不分前后

    如何访问类变量

    类名.类变量名(因为类变量是随着类加载而创建的,所以直接使用类名访问也可以,不用创建对象
    对象名.类变量名(类变量的访问范围和普通变量的修饰符一样)
    演示:

    public class test {
        public static void main(String[] args) {
        	chils.couunt;//类名访问
            chils c1 = new chils("小明");
            c1.couunt++;//对象名访问
              }
    }
    class chils{
        static int couunt;
        String name;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    类变量使用细节

    1. 类变量的使用场景:当需要让每个类的所有对象都共享一个变量时,就可以使用类变量。例如:学生类,统计每个学生交了多少学费
    2. 类变量和实例变量的区别:类变量是该类的所有对象共享的,而实例变量是每个对象独享的
    3. 加上static的变量就称为类变量或静态变量,否则就是实例变量/普通变量/非静态变量
    4. 类变量可以通过类名.类变量名或对象名.类变量名访问。推荐使用类名.类变量名,(需要遵守修饰符访问范围)
    5. 实例变量不能通过类名.实例变量名访问
    6. 类变量在类加载的时候就初始化了,即使没有创建对象,只要类加载了,就可以使用类变量
    7. 类变量的周期是随着类加载开始的,随着类销毁而结束的

  • 相关阅读:
    java计算机毕业设计ssm网络相册设计sepo8(附源码、数据库)
    SAAJ:SOAP with Attachments API for Java interface
    深入了解Linux系统中的“access“函数
    Python 连接数据库添加字段
    Commons Collections1
    Spring Boot整合Thymeleaf
    C语言-01_HelloWord
    快捷方式变白解决方法
    Oracle/PLSQL: Cardinality Function
    ubuntu 外置相机使用记录
  • 原文地址:https://blog.csdn.net/WINorYU/article/details/127560843