zoukankan      html  css  js  c++  java
  • 长度非0的数组是可变的

    今天看到一篇文章,上面提到一句话:长度非0的数组是可变的。

    为什么是非0才不可变,因为数据的长度是固定的,非0可变也就是按时是数组中的元素可变。

    昨天看了廖雪峰的java基础,里面就有提到基本类型的数组,这个数组本身的类型是引用类型。

    也就是 int[] a = {1,2};

    这个a变量,它的类型是引用类型。

    实际上我们可以通过a[0]之类的操作来改变定义为final的数组的元素。只不过是不能改变a的指向。

    也就是

    final int[] a = {1,2};

    int[] b = {3,4};

    a = b; // 这个是错误的

    a[0] = 10; // 这个是可以操作的

    元素是可以任意被改变的,要想数组不可变,其实可以加一个代码,

    private static final String[] aArray = {"a", "b", "c"};
        public static final List<String> aList = Collections.unmodifiableList(Arrays.asList(aArray));

    但即使是这样,只是对元素的修改不可以了,对于该元素的属性还是可以修改的。

    @Data
    public class A {
        private String a;
        private static final A[] aArray = {new A()};
        public static final List<A> aList = Collections.unmodifiableList(Arrays.asList(aArray));
    
        public static void main(String[] args) {
            System.out.println(aList); // [A(a=null)]
            aList.get(0).setA("aaa");  // 是可以的
            System.out.println(aList); // [A(a=aaa)]
        }
    }
  • 相关阅读:
    UIPickerView-一.01-
    闭包-01-Swift
    Swift 入门-01-概述
    git使用命令行-01-自己操作的
    FetchedResultsController-03-CoreData相关
    SQLite-05-增删改查
    Sqlite函数总结-04
    List<string>转xml
    比较两个List<T>是否相同
    获取DataTable前几条数据
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/14283672.html
Copyright © 2011-2022 走看看