今天犯了一个错,错误场景如下:
在创建数组的时候,静态赋值是这样的:int [] a={1,2,3};
用着用着就习惯了大括号赋值的方式,导致后来误以为{1,2,3}就是一个数组,其实不是,当在数组定义并赋值的时候
int[] a ={1,2,3} 等价于 int[] a =new [] {1,2,3}, 而单独写{ 1,2,3}并不是说这就是一个数组,实际上并没有创建数组对象,因此,当一个函数需要数组作为参数传递的时候,就不能干巴巴地直接传递{1,2,3}。示例代码如下:
public static void main(String[] args)throws Exception{
//System.out.println(Long.MAX_VALUE);
int[]a={1,2}; //大括号自动转为数组类型 等价于:int []a =new [] {1,2};
int[]b={3,4};
tets(a,b);
tets(new int[] {1,2},new int[]{3});
//tets({1,2,3},{3});//报错,单独的大括号不代表是数组,因为单独写{1,23}不等价于new[] {1,23},没有创建数组
test2(1,2,3);
test2(a); //传递数组进去。
//test2({1,23});// 报错,同上的道理
}
public static void test2(int ...dest){ //可变参数
}
public static void tets(int[]...dest ){
int[]a =dest[0];
int[]b=dest[1];
for(int i:a ){
System.out.println(i);
}
for(int i:b ){
System.out.println(i);
}
}