每日一题----------类变量
- IT业界
- 2025-09-20 19:42:02

由问题引出解决方案
按照传统思想:创建调用方法的主类
//创建一个计数器 来记录小孩的个数 int count = 0 ; game child1 = new game("张三"); child1.Game(); count++; game child2 = new game("李四"); child2.Game(); count++; game child3 = new game("王五"); child3.Game(); count++; System.out.println("总共" + count + "个小孩在玩耍");创建一个实体化的类,并且创建方法,来表示小孩玩耍的信息
class game{ //给小孩带一个姓名属性 private String name; //传入小孩的姓名 public game(String name) { this.name = name; } //打印小孩玩耍的信息 public void Game(){ System.out.println(name + "正在玩耍、、、、"); }改进,将count设置为类变量(静态变量)
public static int count = 0;在调用的时候,就是可以任意一个对象调用,然后累加
child1.count++; child2.count++; child3.count++;关于静态类的内存分析图-------------------------------------------------------------------------------------------
静态变量的内存分配
存储区域:静态变量存储在方法区(Method Area)中。方法区是JVM运行时数据区的一部分,主要用于存储已被虚拟机加载的类信息、常量、静态变量等。需要注意的是,从Java 7开始,运行时常量池被移到了堆(Heap)中;而在Java 8及之后版本,永久代(PermGen)被元空间(Metaspace)取代,方法区的概念实际上由元空间实现。
生命周期:静态变量的生命周期与类的生命周期相同,即从类加载到JVM卸载该类为止。一旦类被加载到JVM中,静态变量就会被初始化,并且在整个程序执行期间都存在,除非显式地将其值设为null或重新赋值。
初始化时机:静态变量在类第一次被加载时初始化,这通常发生在首次创建该类的对象或首次访问静态成员(包括静态方法和静态变量)的时候。静态变量只能通过类名来引用,不能通过类的实例引用。
共享性:因为静态变量不属于任何一个具体的对象实例,而是属于整个类,所以它们可以被该类的所有实例共享。对静态变量所做的任何改变都会影响到所有使用该变量的地方。
注意事项1. 线程安全:如果多个线程同时访问和修改静态变量,则可能会出现并发问题。在这种情况下,需要考虑同步机制以确保线程安全。
2.垃圾回收:静态变量不会随着类实例的销毁而被回收。只有当类本身被卸载时,其对应的静态变量才会被清除。因此,在使用静态变量时应小心管理资源,避免内存泄漏。
总结:
创建一个静态变量字符串name的名字为张三
class A { public static String name = "张三"; }然后创建主类,去访问,可以用类名直接访问
//可以自己类名访问 A.name ; //也可以用创建对象来访问 A p1 = new A(); p1.name;要注意访问修饰符,如果是私有的private也要遵循访问权限,否则会报错。
每日一题----------类变量由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“每日一题----------类变量”
上一篇
Python安装