【Java学习方法】类变量

类变量

引出关键字:static

又名:静态变量,静态字段,类字段(字段又名属性,成员方法),类属性

是什么?

供该(同一个类)的所有对象共享的变量

  • (1)任何一个该类的对象去访问它时,取到的都是相同的值

  • (2)同样任何一个该类的对象去修改它时,修改的也是同一个变量

  • (3)随着类的加载创建


类变量的创建机制(内存布局)

  • 第一种说法(JDK8 以前的版本)

    • 类加载的时候会在方法区创建一块空间(称为静态域),static 修饰的变量存储在其中

  • 第二种说法(JDK8 以后的版本)

    - ## ==staic变量==保存在==堆空间==中
    - ## 类加载时候的时候通过==反射机制==加载一个==Class对象==,static变量保存在Class实例的尾部
    
    请添加图片描述

类变量的使用

一、类变量的定义

两种定义方法

  • 1.(推荐!!)访问修饰符 static 变量类型 变量名

public static int age;
  • 2. static 访问修饰符 变量类型 变量名

static public int age;

二、类变量的访问

注意点!!

  • 1. 由于类变量供同一个类的所有对象共享,因此可以通过类名访问

  • 2. 静态变量的访问修饰符的访问权限和范围 和 普通欧冠属性是一样的

两种方式

  • 1.(推荐!!)类名.类变量名

  • 2. 对象名.类变量名


快速入门:统计创建对象的个数

public class practise01 {
    public static void main(String[] args) {
        statictest statictest1 = new statictest();
        statictest statictest2 = new statictest();
        statictest statictest3 = new statictest();
        int tot = statictest.totalobjectnum();
        System.out.println("创建statictest类对象的总个数是:" + tot);
    }
}

class statictest{

    static int objectnum;

    public statictest(){
        statictest.objectnum ++;
    }

    public static int totalobjectnum(){
        return objectnum;
    }
}
// 输出结果
创建statictest类对象的总个数是:3

代码说明

1. 创建类变量objectnum用于统计创建该类对象的个数

2. 在构造器中加入逻辑,只要创建对象,类变量objectnum的值就自增一

3. 使用totalobjectnum方法返回该类对象创建的个数


类变量的使用细节

  • (1)什么时候需要用类变量?

    • 当我们需要让某个类的所有对象共享一个变量时,就可以考虑使用类变量(静态变量)

  • (2)类变量实例变量(普通属性)区别

    • 1. 类变量是该类的所有对象共享

    • 2. 实例变量是每个对象独享的。

  • (3)类变量可以通过类名.类变量来访问,但实例变量只能通过对象.类变量来访问(但 Java 设计者推荐我们使用类名.类变量方式访问)。

  • (4)实例变量不能通过类名.类变量方式访问,需要创建对象后才能通过对象名.属性的方法访问

  • (5)类变量是随类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量。

  • (6)类变量的生命周期是随着类的加载开始,随着类消失而销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackson凌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值