面向对象进阶—Static关键字
面向对象进阶需要学习什么
Static关键字的作用
成员变量–静态成员变量,实例成员变量
代码演示
package Static_Demo;
public class User {
public static int onlineNumber = 161;
private String name;
private int age;
public static void main(String[] args) {
User u1 = new User();
u1.name = "猪八戒";
u1.age = 35;
u1.onlineNumber++;
User u2 = new User();
u2.name = "孙悟空";
u2.age = 45;
User.onlineNumber++;
System.out.println(onlineNumber);
}
}
运行结果:
静态成员变量的内存原理–以上述代码为例
首先计算机开辟三块区域用于存放代码—方法区,栈内存,堆内存 紧接着计算机开始执行代码,首先先执行类代码User.class,然后执行main方法,并将main方法存放入栈内存中,堆内存程序开始时已经存在了对象的静态变量区,初始化的在线人数为161 程序开始一行一行执行
开始创建对象,用户对象首先再栈内存存中开辟一地址,然后再堆内存中开辟用户的姓名,年龄等实例成员变量,同时该用户对象也指向静态成员变量
开辟第二个用户对象,流程如上
总结
|