数组

是引用类型,并且数组大小不可变。我们观察下面的代码:

public class Main {
    public static void main(String[] args) {
        // 5位同学的成绩:
        int[] ns;
        ns = new int[] { 68, 79, 91, 85, 62 };
        System.out.println(ns.length); // 5
        ns = new int[] { 1, 2, 3 };
        System.out.println(ns.length); // 3
    }
}

原数组变了吗?看上去好像是变了,但其实根本没变,保留不清除。

对于数组ns来说,执行ns = new int[] { 68, 79, 91, 85, 62 };时,它指向一个5个元素的数组

但是,原有的5个元素的数组并没有改变,只是无法通过变量ns引用到它们而已。

在字符串数组中

如果数组元素不是基本类型,而是一个引用类型,那么,修改数组元素会有哪些不同?
字符串是引用类型,因此我们先定义一个字符串数组:

String[] names = {
    "ABC", "XYZ", "zoo"
};

对于String[]类型的数组变量names,它实际上包含3个元素,但每个元素都指向某个字符串对象:

这里注意到原来names[1]指向的字符串”XYZ”并没有改变,仅仅是将names[1]的引用从指向”XYZ”改成了指向”cat”(这不与字符串的final属性冲突,我们改变的是数组的引用对象),其结果是字符串”XYZ”再也无法通过names[1]访问到了。

public class Main {
    public static void main(String[] args) {
        String[] names = {"ABC", "XYZ", "zoo"};
        String s = names[1];
        names[1] = "cat";
        System.out.println(s); //XYZ
    }
}
最后修改日期:2019年12月24日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。