java中的final 数组 java中的final 数组内容为什么可以改变,such as: final int b[2]={1,2}; b[1]++; System.out.println(b[1]);//结果是3 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 final int b[]只是说你的b数组不能再指向其他数组对象,但它指向的数组的内容是可以变的! final int b[2]={1,2}; 的意思是这个b指向的地址不能改变,不是内容不能改变。你试一试 int c[2]={3,4}; b=c;肯定编译不过,因为不允许你改变他指向的地址。 final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。 final StringBuffer a=new StringBuffer("immutable"); a.append(" broken!"); //编译通过 java中的常量永远不能修饰对象的实际内容。即:final int b[2]={1,2}; b[1]++; //OK b = new int(){1,2}; //NOT OKint b[2]={1,2}; b[1]++; //OK b = new int(){1,2}; //OK final int b[2]={1,2}; 表示 b只能指向{1,2}这个数组,只能作为{1,2}的引用,不能指向其他的数组了. 但,{1,2}这个数组的内容是可以改变的. Java执行.cmd 请教java的aop的原理,尤其是为什么调用业务方法的时候,会跑到invoke方法里面,谁知道的? JAVA通讯录小程序 JTextArea问题 java怎么样从键盘输入数值? Java中如何实现换肤功能。 在画布最大化等变化的时候,我用Graphics画的图都没有了 两套mis系统,一套用B/S结构,一套用C/S结构,两者业务完全相同,在对客户介绍时如何突出B/S系统优点?应从那几个方面说明 求救!简单问题 数组中的值不重复,从数组随机返回一个值,要求不能重复 JCloseableTabbedPane为什么不能用 谁能给我ScrollPane的小例子啊,谢谢了!!!
但它指向的数组的内容是可以变的!
的意思是这个b指向的地址不能改变,不是内容不能改变。你试一试 int c[2]={3,4}; b=c;肯定编译不过,因为不允许你改变他指向的地址。
final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。 final StringBuffer a=new StringBuffer("immutable");
a.append(" broken!"); //编译通过
final int b[2]={1,2};
b[1]++; //OK
b = new int(){1,2}; //NOT OKint b[2]={1,2};
b[1]++; //OK
b = new int(){1,2}; //OK
表示 b只能指向{1,2}这个数组,只能作为{1,2}的引用,不能指向其他的数组了.
但,{1,2}这个数组的内容是可以改变的.