static关键字修饰成员变量

本文通过一个小孩玩游戏的例子,讲解了如何从传统的成员变量过渡到类变量(静态变量)的使用。传统方法中,每个对象都有独立的计数器,而通过引入类变量,所有对象可以共享同一个计数器,简化了代码并提高了效率。类变量在类加载时初始化,并在所有对象间共享,其生命周期与类相同。文章还探讨了类变量的定义、访问方式以及使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

问题引入

以传统的方法如何解决问题

思路分析

代码实现

问题分析(存在哪些问题)

思路改进

代码优化

类变量

什么是类变量

如何定义类变量

如何访问类变量

类变量的内存布局

类变量的使用注意事项和细节讨论


问题引入

有一群小孩在玩游戏 不时有新的小孩加入

请问:现在共要多少人在玩游戏?

以传统的方法如何解决问题

定义成员变量(int count)

思路分析

1.main()中定义一个成员变量count

2.当一个小孩加入游戏后count++,最后输出count就记录有多少个小孩加入了游戏

代码实现

main(){
	int count = 0;
	Child child = new Child(“Tom”);
	child.join();
	count++;

    Child child = new Child(“Jack”);
    child.join();
    count++;

    Child child = new Child(“Mary”);
    child.join();
    count++;

    System.out.println("小孩总数:" + count);
}
Class Child{
	private String name;
	public Child(String name){
		 this. child = name;
	}
    Public void join(){
	    System.out.println(name + "加入了游戏...");
    }
}

问题分析(存在哪些问题)

  1.count是独立于对象的,与Child是没有任何关联的。

  2.以后我们访问count会非常麻烦,没有使用到面向对象编程。

  3.引入类变量(静态变量)。

思路改进

设计一个int count表示总人数,我们在创建一个小孩时,就把count++并且count是所有对象共享的就完美了~

代码优化

main(){
	//int count = 0;
	Child child1 = new Child(“Tom”);
	child.join();
    //count++;
	Child.count++;

    Child child2 = new Child(“Jack”);
    child.join();
    //count++;
	Child.count++;


    Child child3 = new Child(“Mary”);
    child.join();
    //count++;
	Child.count++;

    //System.out.printlin("小孩总数:" + count);
    System.out.printlin("小孩总数:" + 	Child.count);
}
Class Child{
	private String name;
	//定义一个类变量count
	public static int count = 0;
	public Child(String name){
		 this. child = name;
	}
    Public void join(){
	System.out.printlin(name + "加入了游戏...");
    }
}

类变量

什么是类变量

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

如何定义类变量

        定义语法

        访问修饰符 static 数据类型 变量名;【推荐】

        static 访问修饰符 数据类型 变量名;

如何访问类变量

        类名.类变量名【推荐】

        对象名.类变量名

【静态变量的访问修饰符的访问权限和范围 和 普通变量是一样的】

类变量的内存布局

类变量的使用注意事项和细节讨论

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

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

比如:定义学生类,统计所有学生共交多少钱。Student (name, fee)

2.类变量(静态变量)与普通变量区别

类变量是该类的所有对象共享的,而普通成员变量是每个对象独享的。

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

4.类变量可以通过类名.类变量名或者对象名.类变量名来访问。

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

5.普通成员变量不能通过类名.类变量名方式访问。

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值