Java中可以为final数组赋值吗?
数组是一种可以容纳固定数量项的容器,这些项必须是相同类型。大多数数据结构都利用数组来实现其算法。以下是理解数组概念的一些重要术语。
元素 − 存储在数组中的每一项都称为元素。
索引 − 数组中每个元素的位置都有一个数字索引,用于标识该元素。
数组的大小在创建时确定。
示例
public class ArrayExample {
public static void main(String args[]){
//Declaring an array
int[] myArray = {233, 783, 453};
//Printing the array
for(int i=0; i<myArray.length; i++){
System.out.println(myArray[i]);
}
}
}输出
233 783 453
final变量
如果声明了一个final变量,之后就不能修改或赋值。此外,与实例变量一样,final变量不会用默认值初始化。
因此,必须在声明final变量时对其进行初始化。
但是,如果尝试在未初始化的情况下声明final变量,则会生成一个编译错误,提示“变量 variable_name 在默认构造函数中未初始化”。
示例
public class FinalVariables {
public static void main(String args[]){
final int j = 10;
j = 220;
}
}final数组
但是对于数组,您可以声明数组为final,并且仍然可以重新赋值而不会出现任何编译时错误。
示例
public class FinalArrays {
public static void main(String args[]){
//Declaring an array
final int[] myArray = {233, 783, 453};
//Printing the array
for(int i=0; i<myArray.length; i++){
System.out.println(myArray[i]);
}
//Changing the values of the array
myArray[0] = 2020;
myArray[1] = 3040;
myArray[2] = 4060;
for(int i=0; i<myArray.length; i++){
System.out.println(myArray[i]);
}
}
}输出
233 783 453 2020 3040 4060
原因是,与变量不同,数组是对象,它们不保存值,而是指向保存值的内存位置的地址。
对于对象和数组,如果引用变量是final,则它不能指向另一个对象/数组。如果尝试这样做,则会生成编译时错误。
示例
public class FinalArrays {
public static void main(String args[]){
//Declaring an array
final int[] myArray1 = {233, 783, 453};
//Printing the array
System.out.println(myArray1);
int[] myArray2 = {233, 783, 453};
myArray2[0] = 2020;
myArray2[1] = 3040;
myArray2[2] = 4060;
myArray1 = myArray2;
}
}输出
编译时错误
inalArrays.java:14: error: cannot assign a value to final variable myArray1 myArray1 = myArray2; ^ 1 error
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP