定义final int i = new int[2];之后树组维数无法改变,但内容可变,如何使内容也不可变 final int[] i = {0,1};//下面这句是错的i = new int[3];//下面这句是可以的,但我希望它不可以i[0] = 1; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主的final int i = new int[2];这个语句,有问题吧。 漏了[]不用那个了,下面的更能说明我的问题:final int[] i = {0,1};//下面这句是错的i = new int[3];//下面这句是可以的,但我希望它不可以i[0] = 1; 不可以实现!可以想像,一个类中的final成员是要求在实例的初始化完成之前完成赋值的(在么在声明的同时赋值,要么在构造器中赋值)。可以想像一个数组对象是一个类,数组对象中的成员由于是在数组本身完成初始化以后再被赋值,因此不可以实现final。 再补充一下,可能会让你更加清楚:int[] i = {1, 2};在这句里面,i这个数组的初始化过程是这样的:1) 创建一个int[]型的变量i2) 在堆中创建一个空的数组结构3) 初始化数组中的二个元素为04) 将第一个元素重新赋值为1,将第二元重新赋值为25) 返回一个指向自己的引用,并将这个引用赋给变量i可以看出,第3步到第4步的过程中,数组的值是非变不可的,否则数组中各个元素永远是0。这就是为什么数组中的元素不可能是final的原因。 final int i = new int[2];有问题final int[]i={1,2}; final 的值是不可以变的。要变就不能是final 如果不是一定要用数组,可以换一种思路,final class AConst{ public static int i1 = 1; public static int i2 = 2;} 如果不是一定要用数组,可以换一种思路,final class AConst{ public static int i1 = 1; public static int i2 = 2;}引用这个final类中的成员就是了。 从远程路径上读写图片文件,出现掉色现象,如何解决? 请问大家... 如何让一个JDialog窗体在打开后一直是最前窗体 急!一个日期循环的问题.求大家帮忙!!!100分啦 求一个可以反编译目录的工具---我就20分了:) JAVA不同数据类型的转换和计算(急~~~~~!!!!在线等待!!!!!) 在win2000server里如何一打开console窗口就在某目录下 初学java,请教一个很菜的问题? 各位老大帮帮忙,如何在EditPlus 里面编辑java程序能有上下文提示阿? j2sdkee 是不是不能在 win98 下面跑呀 ? 如何把DUBLE保留二位小数呀。 关于对象序列化的问题
i = new int[3];//下面这句是可以的,但我希望它不可以
i[0] = 1;
1) 创建一个int[]型的变量i
2) 在堆中创建一个空的数组结构
3) 初始化数组中的二个元素为0
4) 将第一个元素重新赋值为1,将第二元重新赋值为2
5) 返回一个指向自己的引用,并将这个引用赋给变量i可以看出,第3步到第4步的过程中,数组的值是非变不可的,否则数组中各个元素永远是0。这就是为什么数组中的元素不可能是final的原因。
有问题
final int[]i={1,2};
final class AConst{
public static int i1 = 1;
public static int i2 = 2;
}
final class AConst{
public static int i1 = 1;
public static int i2 = 2;
}引用这个final类中的成员就是了。