package Static_Demo;public class User { // 静态成员变量(有static修饰,属于类,内存中加载一次): 常表示如在线人数信息、等需要被共享的信息,可以被共享访问。 // 静态成员变量 public static int onlineNumber = 161; // 实例成员变量(无static修饰,存在于每个对象中):常表示姓名name、年龄age、等属于每个对象的信息。 // 实例化成员变量 private String name; private int age; public static void main(String[] args) { // 2、对象.实例成员变量 User u1 = new User(); u1.name = "猪八戒"; u1.age = 35; // 对象.静态成员变量(不推荐写法) u1.onlineNumber++; User u2 = new User(); u2.name = "孙悟空"; u2.age = 45; //1、类名.静态成员变量(推荐写法) User.onlineNumber++; // 注意:同一个类中访问静态成员变量,静态成员变量可以省略不写 System.out.println(onlineNumber); }}
运行结果:
首先计算机开辟三块区域用于存放代码—方法区,栈内存,堆内存
紧接着计算机开始执行代码,首先先执行类代码User.class,然后执行main方法,并将main方法存放入栈内存中,堆内存程序开始时已经存在了对象的静态变量区,初始化的在线人数为161
程序开始一行一行执行
开始创建对象,用户对象首先再栈内存存中开辟一地址,然后再堆内存中开辟用户的姓名,年龄等实例成员变量,同时该用户对象也指向静态成员变量
开辟第二个用户对象,流程如上