数组两种有初始化方式:静态初始化和动态初始化:
- 静态初始化
int[] arr=new int[]{1,2,3,4,5};
- 静态初始化时内容已经确定,长度根据内容推断出来。
- 动态初始化
int[] arr=new int[3];
arr[0]=1;
arr[1]=2;
arr[3]=3;
- 动态初始化时仅指定长度,内容后续指定。
{1,2,3}和new int[]{1,2,3}的区别
- 在声明数组和初始化同时进行时,两种方式没有区别
int[] arr=new int[3]{1,2,3};
int[] arr={1,2,3};
- 在需要先声明数组变量再后续进行赋值时,只能使用
new int[3]{1,2,3}这种方式
int[] arr;
arr=new int[3]{1,2,3};
int[] arr;
arr={1,2,3};//报错
- 原因
java编译器具有类型推断机制,在代码
int[] arr={1,2,3};中,根据变量arr前面的int[]推断出来{1,2,3}推断成new int[]{1,2,3}。但是写成两个行时,编译器就无法推断出来。