描述 Dog 对象:
- package Android.java.oop10;
- public class Dog {
- public static String name;
- public static int age;
- public static void showNameAge() {
- System.out.println("name:" + name + "age:" + age);
- }
- }
main 测试方法:
- package Android.java.oop10;
- public class Demo01 {
- public static void main(String[] args) {
- Dog.name = "阿白";
- Dog.age = 98;
- Dog.name = "李双";
- Dog.age = 90;
- Dog.showNameAge();
- }
- }
执行结果:
以上案例对应内存图:
1. 执行 java Demo01 是给 JVM 发送指令, 和 JVM 说: 把这个 Demo01.class 去执行;
2.JVM 就去执行 Demo01.class 文件里面的字节码, 首先第一步 是把 Demo01.class 字节码加载进内存;
3. 第二步把 Demo01.class 放入字节码存放区;
4. 第三步把 Demo01 里面的静态数据 (静态变量 与 静态方法) 分配到 静态区;
5. 第四步 main 方法进栈, 如何进栈的, 是把静态区里面的 main 方法拿到运行区(栈) 然后就进栈了;
6. 第五步 main 方法执行 Demo. 的时候, 就在此时 才把 Dog.class 加载进内存;
7. 第六步把 Dog.class 放入字节码存放区;
8. 第七步把 Dog 里面的静态数据 (静态变量 与 静态方法) 分配到 静态区;
9 第八步 在 main 方法中执行 Dog.name 是向静态区去找到 Dog.name 拿来使用, 由于是共享的 name 只保持最后修改的数据;
来源: http://www.bubuko.com/infodetail-2944628.html