Java中定义数组必须要指定长度吗,如果是为什么?

Java中定义数组必须要指定长度吗,如果是为什么?今天写程序时,前面定义了一个数组是空的int[] a ={};但是在下面用a[i]循环赋值时会出现 java.lang.ArrayIndexOutOfBoundsException错误,当我用int[] a = new int[8];这种形式就不会出现这种错误,这是什么原因,求回答啊

Java中的数组是定长的!你这样int[] a ={}; 定义出来的数组a 长度为0,已经是定长了,之后再给它赋值是不可以的,因为它的长度定义出来之后是不可改变的了。
所以在使用数组的时候,一定要注意长度,不能超过这个长度,负责就数组下表越界了。

如果是标明全部格式,就必须给定一个数值,否则返回时出错;刚开始可以用变量名,在后面再new一个数组,也可以一个个添加!把数组可以看作是一个变量,比普通的
变量难理解而已!

不知道循环的时候你循环条件是什么?是数组的长度吗?

你用这种方式肯定要先声明数组长度,不然系统不会为他分配内存空间。如果是不知道长度的话,你可以要arrayList动态数组啊。

使用new时进行新建,会直接分配内存空间,使用这种方式的话好像不行

根据你的错误提示,我感觉你是在循环结构里出现了类似for(int i=0;i<=a.length;i++)的写法,要注意i只能<a.length,不能等于。length为n的数组
,下标是从0~n-1的。

不一定,有一种是 typename……arryname用法,不过总体来说是的