Android-Java-静态变量与静态方法&普通变量与普通方法(内存图 完整版)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android-Java-静态变量与静态方法&普通变量与普通方法(内存图 完整版),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2382字,纯文字阅读大概需要4分钟。
内容图文
![Android-Java-静态变量与静态方法&普通变量与普通方法(内存图 完整版)](/upload/InfoBanner/zyjiaocheng/976/b23862739f464ee2a3632032984c4d69.jpg)
描述Student对象:
package android.java.oop12; // 描述Student对象实体 public class Student { private String name; private int age; protected static String country = "CN"; private Student() {} public Student(String name, int age) { /** * 通过拿到对象引用的地址(9998#==this),去操作 堆区内存的 name属性 age属性 */ this.name = name; this.age = age; } public void showValue() { /** * 通过拿到对象引用的地址(9998#==this),去操作 堆区内存的 name属性 age属性 */ System.out.println("name:" + this.name + " age:" + age); } public static void printlnCountry() { /** * 通过类名就可用拿到 ---> 方法区(共享数据区) --> 中的 静态区 里面的 --> 静态数据 ,都是共享的 */ System.out.println("country:" + Student.country); System.out.println("country:" + country); } }
main测试方法:
package android.java.oop12; public class TestDemo { public static void main(String[] args) { /** * 实例化Student对象 new Student("张三", 89); * 拿到实例化对象引用的地址 Student student == 9998# */ Student student = new Student("张三", 89); /** * 通过拿到对象引用的地址(9998#==this),去调用showValue()方法 */ student.showValue(); /** * 直接调用 静态区 共享的 printlnCountry() 方法 */ Student.printlnCountry(); } }
执行结果:
以上案例对应的内存图:
1. 执行 java TestDemo
是给JVM发送指令,和JVM说:把这个 TestDemo.class 去执行;
2.JVM就去执行 TestDemo.class 文件里面的字节码,首先第一步 是把 TestDemo.class字节码加载进内存;
3.第二步,会把TestDemo 静态数据 分配到 静态区里面去;
4.第三步,main方法进栈,是直接把静态区里面的 TestDemo --> main 方法拿过来进栈运行;
5.第四步,new Student("张三", 89);
6.第五步,注意:非常重要的点 要记住 ,那就是在 new Student("张三", 89); 的时候才把,Student.class加载进内存中的---> 存放区;
7.第六步,分配Student静态数据到--->静态区;
8.第七步,在堆内存中开辟 Student对象空间,并分配对象地址,并给变量赋初始值 null 0 等;
9.第八步:构造方法Student(name, age) 进栈, 第九步:构造方法Student(name, age)弹栈;
10.第十步,在堆内存中,name age 属性 被赋值完毕;
11.第十一步,new Student(name, age); 后 得到一个对象引用地址 给student变量;
12.第十二步,调用 student.showValue();
13.第十三步:showValue()方法进栈, 并通过this去操作name、age属性, 第十四步:showValue()方法弹栈;
14.第十五步:
;
15.第十六步:printlnCountry()方法进栈,并直接去访问 共享的 country 变量, 第十七步:printlnCountry()方法弹栈;
16.第十八步:main方法执行完毕,弹栈;
17.第十九步:等待 JVM GC 机制来回收 Student对象;
内容总结
以上是互联网集市为您收集整理的Android-Java-静态变量与静态方法&普通变量与普通方法(内存图 完整版)全部内容,希望文章能够帮你解决Android-Java-静态变量与静态方法&普通变量与普通方法(内存图 完整版)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。