日期:2014-05-20  浏览次数:20896 次

求大牛来帮我解释下下面的代码
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;
------解决方案--------------------
引用:
谢谢2两位,还有个问题想问下final int [] z是复合类型,是不是凡是复合类型final都是指向内存地址,而并不是内容。

你这里final的是z,也就是z不可以改变了。
就算你不加final,z的值也是内存中的地址,它指向的是这个数组。