Java程序执行过程的内存分析
来源:互联网 发布:php 微信扫码支付接口 编辑:程序博客网 时间:2024/06/06 09:13
类的属性
1.属性(field),或者叫成员变量2.属性用于定义该类或该类对象包含的数据或者说静态属性3.属性的作用范围是整个类体4.**在定义成员变量时,可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化:数值:0、0.0字符:\u0000(Unicode编码中对应的0)boolean:false所有引用类型:null**5.属性定义格式:[修饰符] 属性类型 属性名 = [默认值];
程序执行过程的内存分析
示例一:
Student.java
package cn.bjsxt.oop;public class Student { //静态的数据 String name; int id; //学号 int age; String gender; int weight; //动态的行为 public void study(){ System.out.println(name+"在学校"); } public void sayHello(String sname){ System.out.println(name+"向"+sname+"說:你好!"); }
Test1.java
package cn.bjsxt.oop;public class Test1 { public static void main(String[] args) { //通过类加载器Class Loader加载Student类。 加载后,在方法区中就有了Student类的信息! Student s1 = new Student(); s1.name = "高琪"; s1.study(); s1.sayHello("馬士兵"); Student s2 = new Student(); s2.age = 18; s2.name="老高"; }}
内存分析示意图(图中的地址是随意写的,没有根据):
示例二:
Student.java
package cn.bjsxt.oop;public class Student { //静态的数据 String name; int id; //学号 int age; String gender; int weight; Computer computer; //动态的行为 public void study(){ System.out.println(name+"在学校"); } public void sayHello(String sname){ System.out.println(name+"向"+sname+"說:你好!"); }
Test2.java
package cn.bjsxt.oop;public class Test2 { public static void main(String[] args) { Student s1 = new Student(); s1.name = "高琪"; s1.age = 18; Computer c = new Computer(); c.brand = "联想"; c.cpuSpeed = 100; s1.computer = c; c.brand = "戴尔"; System.out.println(s1.computer.brand); }}
内存分析示意图(图中的地址是随意写的,没有根据):
分析:由此可见,Java中看不见指针,却处处是指针。
首先,创建Student、Computer和Test2类时,将类中的信息、static变量、变量池等放入方法区(堆)中。
进入main函数:
Student s1 = new Student(); 调用构造器,在堆中创建一个对象,属性皆为默认值,方法中的地址指向方法区中的对应的方法。s1在main函数中,是局部变量,所以在栈中产出,并将构造器在方法区创建的对象的引用赋值给s1。
s1.name = “高琪”; 将方法区中常量池中的”高琪”的引用赋值给对象属性name。(常量池有共享机制,即在Comput中使用”高琪”和在Student中使用的是相同的值)
s1.age = 18; 直接将对象中的age属性中的值由0该为18。
后面的语句原理相同,无非是引用间的相互赋值。
0 0
- Java程序执行过程的内存分析
- 程序执行过程的内存分析
- 程序执行过程的内存分析图
- 【JAVA SE】13.程序执行过程(内存分析)
- java学习之旅31--面向对象_04_程序执行过程的内存分析_01
- java学习之旅32--面向对象_05_程序执行过程的内存分析_02
- Java程序执行过程分析
- java 程序执行的 内存代码划分即 java执行过程中的内存管理
- java程序执行内存处理过程
- java程序执行内存处理过程
- 面向对象第三课,程序执行过程的内存分析,堆、栈分析
- Java程序的执行过程
- 程序执行内存分析
- 计算机程序的执行过程分析
- 31_面向对象_04_程序执行过程的内存分析_01
- 32_面向对象_05_程序执行过程的内存分析_02
- 【J2SE】分析程序的内存分配过程
- 程序执行过程内存模型
- HDU Problem - 1058 Humble Numbers 【dp】
- 如何学习嵌入式系统(基于ARM平台)
- 基于开源dxflib解析库的dxf文件显示
- Save results to different files when executing multi SQL statements in DB Query Analyzer 7.01
- wsacreateevent 事件使用
- Java程序执行过程的内存分析
- 定时向数组前添加不重复随机数
- tensorflow学习笔记(十九):分布式Tensorflow
- HTTP-Session&Cookie
- 冒泡排序图(最长上升子序列变式)
- 涉及Android手机屏幕适配的相关知识
- 重新认识电脑硬件(一)-主机内部
- java 反射基础
- 汉澳sinox无缝运行winxp,QQ游戏影音不在话下