1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java面向对象05:创建对象的内存分析成员变量和局部变量的内存分析

Java面向对象05:创建对象的内存分析成员变量和局部变量的内存分析

时间:2020-01-21 01:23:27

相关推荐

Java面向对象05:创建对象的内存分析成员变量和局部变量的内存分析

一、创建对象内存分析

代码

public class Pet {//宠物类//类的属性public String name;//宠物名public int age ; //宠物年龄public String cry;//宠物叫声//类的方法//默认有个构造器(构造方法):无参构造/*public Pet(){}*/public void shout(){System.out.println(this.name+"叫了一声"+this.cry);}}/*//一个项目应该只存在一个main方法public class Application {//Application应用的意思,总测试类public static void main(String[] args) {//创建一个宠物类对象dogPet dog = new Pet();dog.name="旺财";dog.age=2;dog.cry="汪汪汪";System.out.print("名字:"+dog.name+"\t");System.out.print("年龄:"+dog.age+"\t");dog.shout();//创建一个宠物类对象catPet cat = new Pet();cat.name="小咪";cat.age=3;cat.cry="喵喵喵";System.out.print("名字:"+cat.name+"\t");System.out.print("年龄:"+cat.age+"\t");cat.shout();//对象内存地址System.out.println(dog);System.out.println(cat);}}*/

内存分析

步骤:

1.先在堆中加载Application类,里边有main()方法 和 常量池(字符串)——main()方法在 栈 的最底层

2.在 new Pet() 时在方法区先加载 Pet 类,初始化属性和方法,并在堆中开辟一个新的地址空间

3.把堆中 new Pet() 的 地址空间 指向 栈中 引用变量 (使用引用变量时,其实使用的是堆中的对象地址)

4.给属性相应赋值 (Application的常量池(字符串))

new一个对象相当于在堆中开辟一个内存地址空间,再把对象指向引用变量堆存储对象和数组元素,栈存储系统调用变量(例如引用变量)main()方法在栈的最底层静态方法区,和类一起加载,类加载后,所有的对象都能使用

二、成员变量和局部变量的内存分析

代码

public class Calculator {//成员变量private String brand;//品牌private double size;//尺寸//成员方法public int add(int num1,int num2){int result;result = num1+num2;return result;}public int sub(int num1,int num2){return num1-num2;}public void show(){System.out.println("我购买了一个计算器"+brand+","+size);}public static void main(String[] args) {//购买运算器Calculator calc = new Calculator();calc.brand = "联想";calc.size = 6.5;calc.show();//使用运算器进行运算int num1 = 10;int num2 = 20;int result = calc.add(num1,num2);System.out.println(result);result = calc.sub(num1,num2);System.out.println(result);}}

内存分析

类中定义的变量是成员变量,方法(包括main方法)中定义的变量叫做局部变量(包括方法的参数,代码块中定义的变量)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。