Java 从内部访问本地数组 class

Java accessing local array from inner class

我知道如果变量不是最终变量,则无法从内部 class 编辑局部变量。但是,为什么我可以从内部 class 更改数组,即使它不是最终的?

 public void test(String s) {
        int a[] = {1};
        IntStream.range(0, s.length() / 2).forEach(i -> a[0] = 2);
}

如果 a 是一个数组,编译器不会在我编辑它时报错。但是如果 a 是一个整数,我不能在内部 class.

中对其进行更改

这是 Java 中的一个有用技巧,因为您正在使用的数组(它是一个对象)永远不会重新分配。您可以对对象的属性执行相同的操作。 如果你改变了一个对象的属性,你仍然不会重新分配一个对象并且它会保持“有效最终”。 参考:

旁注:最好以“int[] a”形式编写数组,因为它们更具可读性。