軟件構造——3.1不可變ADT與snapshot

注意結合的順序
double a = (double)2/3; // a = 0.6666…
Data是可變數據類型,LocalDataTime是不可變數據類型

對變量賦值是在改變變量的指向,指向不同的值.
改變可變變量的內容時,是在改變變量內部內容的引用.
於是有了改變變量引用和改變變量值的區別。
對於String是不可變類型,賦值時,付給賦給的是引用,而不是值。即改變引用,不改變值。
對於StringBuilder的append()操作是改變變量值。

而,被final修飾的是不可變引用。對於不可變類型而言,它所指向的引用不可變,那麼它所表示的值就不可變了;可變類型,即使指向的引用不可變,但是不影響其改變變量值。
同時,final關鍵字對不可變引用提供了靜態檢查的支持

Snapshot Diagram
原始數據類型
在這裏插入圖片描述對象
在這裏插入圖片描述
對於可變類型對象,用單線框;對於不可變類型用雙線框
在這裏插入圖片描述對於不可變引用,使用雙向箭頭
如,Person中的final id;
在這裏插入圖片描述List<>
在這裏插入圖片描述Set<>
在這裏插入圖片描述Map<>
在這裏插入圖片描述
特別的,迭代器的snapshot
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章