求大牛来帮我解释下下面的代码
public class Test2 {
public static void main(String[] args) {
int x=0;
final int y =1;
int [] z={8};
final int [] n = {3};
Use(x, y, z, n);
}
static void Use(final int x,int y,final int [] z ,int [] n){
//插入内容
System.out.println(z[0]);
System.out.println(z[0]--);
System.out.println(z[0]++);
}
}
8
8
7 这是为什么会出输出如下数据
------解决方案--------------------System.out.println(z[0]);这行应该毫无疑问吧。。z[0]初始化为8;
System.out.println(z[0]--);z[0]--;先引用在自减,输出8;然后z[0]自减为7;
System.out.println(z[0]++);z[0]++;先引用在自加,输出7;然后z[0]自加为8;
如果还有一行
System.out.println(z[0]);这行则应该输出8;
------解决方案--------------------
你这里final的是z,也就是z不可以改变了。
就算你不加final,z的值也是内存中的地址,它指向的是这个数组。