软件质量目标中可变性和不可变性的理解

本文探讨了Java编程中的不可变性和可变性概念。不可变对象一旦创建,其值或引用无法改变,提供更高的安全性和更好的多线程性能。而可变对象允许修改,适合于减少拷贝提高效率。不可变类型在某些场景下更安全,但可变性可能导致程序复杂性增加。理解这两种特性对于优化代码和确保程序正确性至关重要。
摘要由CSDN通过智能技术生成

1.不可变性

不变性是Java中重要的设计原则,不变的数据类型一旦被创建,其值不能改变;同时如果是引用类型,也可以用关键字final标记以使它成为不可变的,一旦确定其指向的对象,就不能再被改变指向其他对象,编译器在进行静态类型检查时,如果判断final的变量首次赋值后发生了改变,会提示错误,所以要尽量使用final变量作为方法的输入参数,作为局部变量。

注:final类无法派生出子类     final变量无法改变其值/引用   final方法无法被子类重写

2.可变性

使用不可变类型,对其频繁修改会产生大量的临时拷贝,需要很多垃圾回收,而使用可变类型最少化拷贝以提高效率;同时使用可变数据类型,可以获得更好的程序性能,也更适合在多个模块之间共享数据。

3.二者对比

不变对象:一旦被创建,始终指向同一个值或引用

可变对象:拥有方法可以修改自己的值或引用

不可变类型更安全,在其他质量目标方面表现得更好

可变性使得难以理解程序正在做什么,更难满足方法的规约

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值