zoukankan      html  css  js  c++  java
  • 软件构造--immutability mutability的区别简述

    最后阶段还是对可变性这里不是很理解,在这总结一下:

    Immutability 不变性,是key design principle
    不变数据类型:一旦被创建,其值就不能被改变
    String是典型的不变类型,每次改变的时候实际上都是new了一个新的String。
    对比之下,StringBuilder是字符串的可变类,修改的时候不会创建新的变量。

    对于所有的数据类型来说,常见的不变类包括全部的基础类型和他们的包装类(Integer等),以及String和BigInteger这样的对象类。其余的Object类都是可变的。对于像set,list等容器来说,由于他们有add,remove这样的mutator函数,它们在创建之后都是可以被改变的,所以他们都是可变的。若想把他们变成不可变的可以借用collaction里的wrapper把他们变成undefinedset等,程序就会使你的set、list无法再执行mutator,也就是不可变。在这种情况下如果我们还调用mutator的话会在动态检查中被发现并抛出异常。
    所有的不变类都是没有mutator的。

    同样我们除了数据类型的不变性,还有引用的不变性。数据类型的不变性指一个数据被创建出来之后便不能被改变,而引用的不变性则指当一个变量引用另一个变量之后,这个变量不可以再引用别的变量,即x=y后不能执行x=z。要想实现引用的不变性需要我们用final去修饰变量。

  • 相关阅读:
    CodeForce VKcup A
    CNN卷积神经网络
    神经网络
    我的机器学习之路
    [OPENCV] 第一个程序 识别颜色
    Android 登录界面与首页的设计
    go web的基本原理
    Go语言标准库之http/template
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
    数据库恢复技术
  • 原文地址:https://www.cnblogs.com/lllllllm/p/14983929.html
Copyright © 2011-2022 走看看