简单j'ava代码内存图

##首写我们编辑一个代码

public class User {

   int id;           //id

   String

name; //账户名

   String

pwd; //密码

   public User(int id, String name) {

          this.id = id;

          this.name = name;

   }

   

   public static void main(String[ ]

args) {

          User

u1 = new User(100, “高小七”);

          User

u3 = u1;

          System.out.println(u1.name);

          u3.name="张三";

          System.out.println(u1.name);

   }

}

创建user类信息(包括user构造器和常量)

2 (1)在栈中创建main方法的栈帧(包括局部变量u1,u2)。

(2)构建user类,先将堆中对象地址赋予局部变量u1

(3)堆中新建对象(成员变量及方法);方法区定义常量信息。之后回收user类的栈帧。

(4)使用new调用user构造方法。先将堆中对象地址赋予构造方法中的隐藏参数this,并给user方法中的局部变量初始化, user构造器的栈帧。;通过this.id=id对堆中属性初始化。

(5)在栈中再次创建一个user类的栈帧,将堆中对象的地址赋予局部变量u2,这样u2和u1具有相同的地址,指向同一个对象。

(6),在堆中建立一个新对象,属性只有name,在利用栈中的user方法栈帧赋值给新对象。同时也将新对象地址赋予u2,创建完“新对象”后立即回收user类栈帧。

(7)当u2的地址发生改变,随之赋予地址给u2的u1地址也发生改变。

3.如此,这个内存图就可以画出来了:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值