软件构造——3.1不可变ADT与snapshot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lll_90/article/details/93417574

注意结合的顺序
double a = (double)2/3; // a = 0.6666…
Data是可变数据类型,LocalDataTime是不可变数据类型

对变量赋值是在改变变量的指向,指向不同的值.
改变可变变量的内容时,是在改变变量内部内容的引用.
于是有了改变变量引用和改变变量值的区别。
对于String是不可变类型,赋值时,付给赋给的是引用,而不是值。即改变引用,不改变值。
对于StringBuilder的append()操作是改变变量值。

而,被final修饰的是不可变引用。对于不可变类型而言,它所指向的引用不可变,那么它所表示的值就不可变了;可变类型,即使指向的引用不可变,但是不影响其改变变量值。
同时,final关键字对不可变引用提供了静态检查的支持

Snapshot Diagram
原始数据类型
在这里插入图片描述对象
在这里插入图片描述
对于可变类型对象,用单线框;对于不可变类型用双线框
在这里插入图片描述对于不可变引用,使用双向箭头
如,Person中的final id;
在这里插入图片描述List<>
在这里插入图片描述Set<>
在这里插入图片描述Map<>
在这里插入图片描述
特别的,迭代器的snapshot
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lll_90/article/details/93417574