软件构造博客(三)

在这次博客中,将解释snapshot diagram的画法。

snapshot diagram是一种表示程序运行状态的图,可以用来分析一些问题。

首先是基本类型,如int,char之类,直接使用一个单线箭头指过去即可。如:

然后是需要画圈的类型,这个类型又细分为需要使用单线圈和双线圈,使用单线圈的是代表对象是mutable的,后者则代表对象是immutable的,如:

然后,是从圈里往外指的类型,这里分为需要用单线的和双线的,我个人的理解是final这种不可变的就用双线,其余的可变的用单线就行,如:

在代码中,可能是:

List<Object> L = List<>;
String S = new String("AB");
L.add(S);
L.add(5);

下面用这种思路去实际的解决一道往年试题:

我们可以尝试着画一下图,一开始生成一个s:

然后,在a中添加之,注意这里添加的实际上是这个字符串,所以画成:

然后,s发生了变化,由于s是String类型,是immutable的,所以需要新建一个s对象,变成:

之后,复制一个b,我们可以知道,b中的元素实际上还是“xyz”,因此此时再添加“xyz”进去不会有任何效果,所以,我们能够推知答案:a.size = 1,b.contains("x") = false,所以答案应为B:1,false

我们在eclipse中跑一下进行验证:

确实如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值