Java中的常量数组是指数组中的元素都是不可变的,即一旦赋值后就不能再修改。常量数组通常用于存储一些固定的配置信息或者常量值,以提高程序的可读性和可维护性。
final
关键字来修饰,表示其值在初始化后不能被改变。常量数组可以是基本数据类型的数组(如int[]
、double[]
),也可以是引用数据类型的数组(如String[]
)。
public class ConstantArrayExample {
// 定义一个常量整数数组
public static final int[] WEEKDAYS = {1, 2, 3, 4, 5, 6, 7}; // 假设1代表周一,7代表周日
public static void main(String[] args) {
// 访问常量数组
System.out.println("Monday is day: " + WEEKDAYS[0]);
}
}
public class ConstantArrayExample {
// 定义一个常量字符串数组
public static final String[] MONTHS = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
public static void main(String[] args) {
// 访问常量数组
System.out.println("The third month is: " + MONTHS[2]);
}
}
public class ConstantArrayExample {
public static final int[] WEEKDAYS = {1, 2, 3, 4, 5, 6, 7};
public static void main(String[] args) {
// 尝试修改常量数组中的元素(会导致编译错误)
WEEKDAYS[0] = 8; // 编译错误:cannot assign a value to final variable WEEKDAYS
}
}
原因:final
关键字修饰的数组本身是不可变的,但其元素并不是不可变的。尝试修改数组元素会导致编译错误。
解决方法:如果需要确保数组中的元素也不可变,可以使用Arrays.copyOf
方法创建一个新的数组并返回,而不是直接修改原数组。
import java.util.Arrays;
public class ConstantArrayExample {
public static final int[] WEEKDAYS = {1, 2, 3, 4, 5, 6, 7};
public static void main(String[] args) {
// 创建一个新的数组并修改其元素
int[] modifiedWeekdays = Arrays.copyOf(WEEKDAYS, WEEKDAYS.length);
modifiedWeekdays[0] = 8;
System.out.println("Modified Monday is day: " + modifiedWeekdays[0]);
}
}
通过这种方式,可以避免直接修改常量数组,从而确保数组的不可变性。
领取专属 10元无门槛券
手把手带您无忧上云