Java基础-静态变量(类变量)
package com.hspedu.static_; public class Course374 { public static void main(String[] args) { // 类变量快速入门 // 这样使用静态static变量不规范 Child child1 = new Child("白骨精"); child1.join(); child1.count++; Child child2 = new Child("狐狸精"); child2.join(); child2.count++; Child child3 = new Child("蜘蛛精"); child3.join(); child3.count++; // 类变量可以通过 类名.变量名 访问 System.out.println("现在共有:" + Child.count + " 个加入了"); System.out.println(child1.count); System.out.println(child2.count); System.out.println(child3.count); } } class Child { private String name; // 定义一个类变量(静态变量),static // 所有的对象都可以共享这个属性 public static int count; // int默认值是0 public Child(String name) { this.name = name; } public void join() { System.out.println(this.name + "加入了.."); } }
package com.hspedu.static_; public class Course375 { public static void main(String[] args) { // 类变量/静态变量的内存分析 /* * 1、child1、child2、child3对象当中都存放了一个地址, * 这个地址指向了count存放的位置(可能是堆空间、可能是方法区的静态域) * 静态变量不管是存放在哪里,不影响其使用方式,所有对象均指向一个位置 * 2、方法区有个空间叫:静态域 * 3、静态变量的存放位置和jdk的版本有关,一般jdk7之前是在方法区中,jdk8以后是在堆空间 * 4、类第一次在加载的时候,方法区会生成类信息,同时也会在堆空间上生成一个对应的Class对象(反射部分) * * */ Child child1 = new Child("Tom"); Child child2 = new Child("Jack"); Child child3 = new Child("Mary"); } } class Child { private String name; public static int count = 0; public Child(String name) { this.name = name; } public void join() { System.out.println(this.name + "加入了.."); } }
package com.hspedu.static_; public class Course377 { public static void main(String[] args) { // 类变量(静态变量)访问细节 /* * 1、使用静态变量的需求:所有对象共享一个属性值(例如统计) * 2、静态变量和实例变量区别:静态变量是所有对象共享、实例变量是每个对象独有 * 3、访问方式:类名/对象.变量名(前提是满足访问权限) * 4、实例变量不能通过类.变量名的方式访问 * 5、类加载了,不需要实例化也可以使用静态变量 * 6、静态变量的声明周期是随着类的加载开始,类的消亡而销毁 * */ A a = new A(); System.out.println(A.n2); // System.out.println(A.n1); System.out.println(B.address); } } class A { // 类变量/静态变量 public static String name = "韩顺平教育"; // 普通属性/普通成员变量/非静态变量/实例变量 private int num = 10; public int n1 = 100; // 不能通过A.n1访问 public static int n2 = 200; } class B { public static String address = "北京"; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!