Java类变量(静态变量)

一、类变量(static)静态变量

  • 什么是类变量

    类变量也叫 静态变量/静态属性 ,是该类的所有对象共享的变量,任何一个该类的对象访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。

  • 如何定义类变量

    复制代码
    访问修饰符 static 数据类型 变量名;【推荐】
    static 访问修饰符 数据类型 变量名;【不推荐】
  • 如何访问类变量

    复制代码
    类名.类变量名
    或者 对象名.类变量名 【静态变量的访问修饰符的访问权限和范围 和 普通属性时一样的】
    推荐:类名.类变量名;
  • 代码样例:

    java 复制代码
    package com.rain.house.text;
    ​
    public class text02 {
        public static void main(String[] args) {
           
            //说明:类变量是随类的加载创建的,所以即使没有创建对象示例也可以访问。
            System.out.println(A.name);
        }
    }
    ​
    ​
    class A{
        //类变量
        public static String name = "sys";
    ​
        public void print(){
            System.out.println(name);
        }
    }

案例分析:

java 复制代码
package com.rain.house.text;
​
public class text01 {
    public static void main(String[] args) {
        Child child1 = new Child("jack");
        child1.join();
        child1.count++;
        Child child2 = new Child("xiaomi");
        child2.join();
        child2.count++;
        Child child3 = new Child("aming");
        child3.join();
        child3.count++;
​
        System.out.println("一共有" + Child.count + "个小朋友");
    }
}
​
​
class Child{
    private String name;
    //定义一个变量count,是应静态变量
    //该变量最大的特点就是会被Child 类的所有的对象实例共享
    public static int count = 0;
    public Child(String name) {
        this.name = name;
    }
    public void join() {
        System.out.println(this.name + "加入了游戏、、、、、、");
    }
}

如上述案例当我们想要计算小孩个数的时候,如果我们只是在主函数去做一个count++去记录人数,有点不符合oop的编程形式,所以我们需要想办法在类对象里面去进行一个count++操作进行人数的计算,所以引出了类变量


类变量是存在于哪里呢?

如图:

类变量的位置随着jdk版本的不同,所存在的内存空间的地方也就不同。

但是不变的是:

  1. static变量是同一个类所有对象共享的

  2. static类变量,在加载类的时候就生成了


1.1、类变量使用注意事项和细节

  1. 什么时候需要使用类变量?

    当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量)。比如上面的案例,计算孩子数量。再比如:定义学生类,统计所有学生共交多少钱。Student(name,static fee)

  2. 类变量与实例变量(普通变量)区别?

    类变量是该类的所有对象共享的,而实例变量是每个对象独享的,如上面图片的0x110 和 0x22空间里面的属性。

  3. 加上staitc成为类变量 或者 静态变量, 否则称为 实例变量/普通变量/非静态变量

  4. 类变量可以通过 类名.类变量名 或者 对象名.类变量名 来访问,但java设计者推荐我们使用 类名.类变量名方式访问。

    【前提是 满足访问修饰符的访问权限和范围】

  5. 实例变量不能通过 类名.类变量名 方式访问

  6. 类变量是在类加载时,就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量了。

  7. 类变量的生命周期随着类的加载开始,随着类消亡而销毁


以上仅作为学习记录笔记~~~~ 无其他用处

相关推荐
不务专业的程序员--阿飞几秒前
JVM无法分配内存
java·jvm·spring boot
李昊哲小课5 分钟前
Maven 完整教程
java·maven
Micrle_0076 分钟前
jvm类加载过程
jvm
Lin_Aries_042114 分钟前
容器化简单的 Java 应用程序
java·linux·运维·开发语言·docker·容器·rpc
脑花儿21 分钟前
ABAP SMW0下载Excel模板并填充&&剪切板方式粘贴
java·前端·数据库
techdashen44 分钟前
12分钟讲解Python核心理念
开发语言·python
北风朝向1 小时前
Spring Boot参数校验8大坑与生产级避坑指南
java·spring boot·后端·spring
闭着眼睛学算法1 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od
山海不说话1 小时前
Java后端面经(八股——Redis)
java·开发语言·redis
郝学胜-神的一滴1 小时前
谨慎地迭代函数所收到的参数 (Effective Python 第31条)
开发语言·python·程序人生·软件工程