可变与不可变区别

可变与不可变区别

目前理解:

可变:初始化之后集合内数据可以动态修改,比如:元素增删改。

不可变:初始化后集合内数据固定,无法修改【针对整个集合,非集合内元素】,只能进行查询操作。


测试现象:

声明不可变Map、不可变Set后,仍然可以使用+=操作,但是List却不能。且增加后也未返回新的变量。

https://img1.sycdn.imooc.com//climg/61b34d1c0919906608780432.jpg


疑问:

和理解的有所偏差,所以想请老师帮忙明确下可变与不可变之间是否有明确的定义?还是说需要根据不同的集合类来看?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

针对不可变的集合使用+=操作后属于生成了一个新的集合,集合自身还是不可变的,不矛盾。
可变集合是直接修改集合内的数据。

  • 迪拜trash 提问者 #1

    但是测试中没有反馈新的变量名称

    2021-12-10 21:09:31
  • 可以试一下获取内存地址值对比一下
    2021-12-10 21:11:19
  • 迪拜trash 提问者 回复 徐老师 #3

    网上百度到:== 可以比较地址是否相等。进行了以下测试:

    https://img1.sycdn.imooc.com//climg/61b356330964accc10200630.jpg

    确实地址发生了变化。

    PS:

    1. val 声明不可变集合,则集合地址与元素不能发生变化;

      var声明不可变集合,元素改变则产生新集合,此时集合地址发生变化;

      var声明可变集合,元素发生改变也不会影响集合地址。

    感谢老师提供思路与解答~~~

    2021-12-10 21:32:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师