java - Java 中的最终 int

标签 java arrays final

我有一个相对简单的问题,关于 final 的功能在 java 。 当我编译这段代码时:

import java.util.*;
import java.lang.*;
import java.io.*;


class Arrays
{
 public static void main (String[] args) throws java.lang.Exception
 {
final int[] myArray = { 1,2 }; 
myArray[1] = 3; 
System.out.println (myArray[1]);  
 }
}

数字“3”被打印。然而,我的印象是final意味着该数组 (myArray) 中保存的值不能再更改并且是恒定的。

这里还有另一段代码:

final int [] a1 = {1, 2}; 
int [] b1 = {3, 4};
a1 = b1; System.out.println (a1[1]);

我相信系统应该打印“2”,因为 a1已完成并且数组中的值是常量。不过 friend 认为应该是“4”。请帮我澄清我对final的理解。

最佳答案

int[] 是一种对象类型(不是基元,也不是 int)。最终引用意味着您在引用 Object 实例时无法重新分配引用。

final int [] a1 = {1, 2}; 
a1 = {3,4}; // <-- illegal, a1 is final.

事实上,Java 在这两种情况下都会生成 final(对象 的值是其引用)。

关于java - Java 中的最终 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28122572/

相关文章:

java - 等价于 Java 中的 const(C++)

java - 为什么Java中的接口(interface)变量是隐式静态的?

java - 使用lucene 4删除文档并检索已删除文档的所有docId

c - 将数组展平为字符串

java - 如何编写 2 个构造函数来初始化 2 个不同的私有(private)最终变量?

java - 加速/提高 Java 数组类的性能

arrays - 在锯齿状的二维网格上向外螺旋

java - Swagger:预期类型数组但在#/paths/../parameters 找到类型对象

java - 如何从 JTable 中删除一行?

java - 无法在 Windows 上运行 Apache nifi