注册 登录
编程论坛 JAVA论坛

有关数组语法糖的问题(新手求指教)

听闻 发布于 2017-10-30 19:04, 1925 次点击
package test;
public class test1 {
   
         public static int[] varSum(int...v){

              int[] r = {v.length,0};     

              for(int n:v) {
                  
                 r[1] = r[1]+n;
              };

              return r;   }
         public static void main(String[] args) {

              int[] a = varSum(1, 2, 3, 4);   

              System.out.printf("len=%d,sum=%d", a[0], a[1]);

           }
}

求指教 (1)int[] r = {v.length,0};是什么意思;
        (2)  System.out.printf("len=%d,sum=%d", a[0], a[1]);是怎么一个工作原理,例如将a[0]换成a[3]程序会报错;
特别感谢大家能详细的告诉我,如果知道的话(
   谢谢大家)坐等。。。
3 回复
#2
calix2017-10-30 19:42
int[] r = {v.length,0};
普通的数组初始化,v.length计算结果就是一个int类型

System.out.printf("len=%d,sum=%d", a[0], a[1]);
做格式化输出用的,这个跟C语言里面的printf比较类似
#3
听闻2017-11-02 21:04
是将v.length的的值作为该数组的长度吗?而那个零是怎么回事,是如何赋值的。可以说清楚一点吗?
我知道是格式化输出,但是不知道为什么是leng=a[0],sum=a[1]
#4
calix2017-11-03 11:29
你看那个varSum方法,数组r里面,第一个元素(r[0])存放的传入的数据v的长度
数组r的第二个元素(r[1]),用来存放累加的结果,初始化为0
int[] r = {v.length,0};这个相当于
---------
int[] r = new int[2];
r[0] = v.length;
r[1] = 0;
---------
其中r[1]会在下面的循环进行累加,最终就会是累加结果
1