int[] arr=new int[] 为什么一个数组定义两次类型?

初学JAVA 不甚明了 前后类型能否不一致?。。。。。。。。。。。。。。。。。。。。。。

前者是定义类型,后者是为该类型分配空间。

 后面的类型必须是前面的类型,或者派生类型,否则需要一个类型转换。
object是int[]的基类
所以
Object arr = new int[];
int[] arr = new int[];;
都是合法的
int[] arr = new Object();
是非法的
Object arr1 = new int[];
int[] arr = (int[])arr1; 是合法的

图片说明这是声明和赋值,只不过写一起

前面是类型,后面是初始化,相当于
int[] arr;
arr=new int[];

前面是类型,后面是初始化

前面是类型,后面是初始化

数组的声明和初始化一起