代碼快照圖屬於軟件多維視圖中的運行時視圖、時刻視圖、代碼視圖。
快照圖表示程序運行時的內部狀態——它的堆棧(正在進行的方法及其本地變量)和堆(當前存在的對象)。
代碼快照圖中最簡單的表示就是那些程序中的變量。只需要用一個箭頭指向一個值即可。如下圖所示:
int i = 3;
**稍微複雜一些的是對象表示,需要用一個圈圈住,圓圈裏面寫上類名。代碼快照圖中的不可變類型需要用雙圈表示,可變類型用單圈(或者虛線?MIT課件裏寫的是虛線)表示****例如:
String s = “hello”;
用final修飾的變量,表示不可變的引用。在代碼快照圖中用雙線表示。例如:
final int n = 5;
以上,是代碼快照圖的基本組成,對於複雜對象,可以將這些表示進行組合。例如:
Point pt = new Point(5, -3);
此外,代碼快照圖是非常靈活的。關注點不同可以有不通的畫法。例如,對於String s = “hello”;如果關注值爲"hello",則用第一中表示,第二種表示則全面顯示了信息,如果只關注其類型是String,則可以使用第三種表示。
此外,代碼快照圖提供了一種可視化的方法來幫助我們分辨引用更改和值更改。
//因爲String是不可變類型,這是改引用
String s = "a";
s = s + "b";
//這個是改值
StringBuilder sb = new StringBuilder("a");
sb.append("b");