• 关于不可变性与可变性的“嵌套”联想


    先给出定义:

    先申述一个概念:变量 = 引用 + 值(也就是:该变量初始化的内存)

    可变性与不可变性:引用可变与否,值可变与否。

    值的可变性取决于:值的类型是否是可变的,这取决于创建该值的类是否可变。

    而引用的可变性取决于:该变量命名时是否前缀有(final)。

    那么对于一个对象而言,其不可变性的程度:是什么?

    一个对象的数据成员是变量,其具有引用与值。那么当声明该对象具有不可变性时,其内的数据成员的值与引用可变与否?引用可变否?值可变否?

    人为定义的不可变类:可以自己进行设定,没有讨论的必要。

    库中的不可变类:基本数据类型的包装类也没有讨论的必要。

                                 Collection的不可变包装类也无讨论必要,因为在某种程度上,其是直接将地址进行纳入,不存在引用变量,其只是保证其内的元素不被添加, 而未保证其内的元素的值不被修改。

    class test {
        
        public static void main(String[] args) {
           in A = new in(5,6);
           in B = new in(5,6);
           List<in> list = new ArrayList<>();
           list.add(A);
           List<in> listcopy = java.util.Collections.unmodifiableList(list);
           for(in p : listcopy) p.print();
           in C =listcopy.get(0) ;
           C.a = 99;
           for(in p : listcopy) p.print();
       }
    }
    class in{
        public int a;
        public int b;
        public in(int a,int b) {
            this.a = a;
            this.b = b;
        }
        public void print() {
            System.out.println(a+" "+b);
        }
    }

  • 相关阅读:
    ios---图片缩放
    ios---清除缓存
    ReactNative---组件种类
    Linux 用户和用户组管理
    Linux 文件与目录管理
    linux文件的基本属性
    xshell 快速复制打开之前用过的ssh
    ll 和 ls -l的详解
    laravel rbac的用户 角色 权限的crud
    laravel 中的rbac自己简单的实现
  • 原文地址:https://www.cnblogs.com/zqybegin/p/12658360.html
Copyright © 2020-2023  润新知