第三章第一节---mutable和imutable类型的简析

本文探讨了软件构造中mutable和imutable类型的差异,强调了imutability类型的变量在安全性上的优势,以及mutability类型在性能上的考量。final变量作为不可变类型的一个例子,其值一旦设定不能更改。而可变类型如StringBuilder允许直接修改对象的值,提供了更高的灵活性。在选择使用可变或不可变类型时,开发者通常需要在安全性和性能之间做出权衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件构造mutable和imutable类型的简析

mutable和imutable(可变性和不可变性)

  • 改变一个变量:是将该变量指向另一个值的存储空间
  • 改变一个变量的值:是指将该变量当前指向的值的存储空间中写入一个新的值
【imutability】
  • final变量能被显示地初始化并且只能初始化一次。即final变量是不变数据类型,一旦被创建,值不可修改。
  • 基本数据类型及其封装对象类型都是不可变地
  • 不可变地引用是指一旦指定引用位置之后,不可再次指定。
  • 如果编译器不能确定final变量不会改变,就提示错误,静态类型检查的一部分。
  • PS:
    • final类无法派生子类
    • final变量无法改变值/引用
    • final方法无法被子类重写

歪解:final就是最后的呀,最后的当然不能被修改了~~

【mutability】
  • 包含两种:
    • 不变类型:一旦被创建,始终指向同个值/引用
    • 可变类型:拥有方法以修改自己的值/引用
  • String与StringBuilder
    • String:不可变数据类型,修改时必须创建一个新的String对象
    • StringBuilder:可改变的数据类型,可以直接修改对象的值
      在这里插入图片描述抄自网络
【可变性与不可变性的优缺点]
  • 可变数据类型最小化的拷贝以提高效率;使用 不可变类型,对其频繁修改会产生大量的临时拷贝 (需要垃圾回收 )
  • 可变数据类型,可获得更好的效能;
  • 可变数据类型也适合在多个模块之间共享数据;
  • 不可变数据类型更安全,更易于理解,也更方便改变;
为了安全,一般我们倾向于选择imutability类型的变量
但是有时候我们需要牺牲安全性来获取性能,比如个人迭代器的编写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值