麻省理工Java软件构造 Reading 2: Basic Java

快照图(Snapshot diagrams)

快照图表示运行时程序的内部状态,这包括栈(stack,存放运行中的方法及方法的局部变量)的情况,和堆(存放当前程序中存在的对象)的情况

快照图的具体表示:

  • 基础数据类型:
    用指向一个数字的箭头来表示
    箭头表示某个变量或某个对象中的字段对这些值的引用

  • 对象数据类型:
    在这里插入图片描述用有箭头指向的圆圈来表示,圆中写着该对象的类型(如上图中的Point)
    我们可以在圈中写入字段名,并用箭头指向它们的值(也就是对上面说的基础数据类型的一个引用)(中间的图)
    我们也可以加入更详细的信息,也就是字段的具体的值。右图中的int x也可以写成x:int

对值的改变(mutate),以及对引用的改变(resign)

  • 对一个变量或字段(不可变数据类型immutable)进行赋值时,改变的是变量的箭头指向的位置,它指向了一个不同的值 String s是不可变数据类型,这是对s重新赋值的情况

  • 对一个可变数据类型进行赋值时(如数组或列表),改变的不是引用,而是引用所指向的值(箭头没有变,数值变)
    StringBuilder sb是可变数据类型,这是对其重新赋值的情况

  • final关键字意味着“引用的不变性”(unreassignable),也就是说,一个变量的引用一旦被确定(被赋值),就不能再被改变(一个箭头一旦指向了一个地址,就不能再被指向其它地址)
    一个被final修饰的引用用下面这种箭头来表示:
    final int id,id只能指向当前的地址(地址里的值为9208484)
    需要注意的是,如果用final修饰一个可变数据类型,那么,尽管引用不会改变,但引用所指向的地址里的值仍可能改变
    final StringBuilder sb,虽然由final,但sb的值仍可以被改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值