java - ArrayIndexOutOfBoundsException - 数组本身没有初始化为默认值吗? ( java )

标签 java arrays indexoutofboundsexception

我有一个类型的对象数组,比方说,Object。

Object[] array = new Object[M];

据我所知,当您将数组的长度指定为M(其中M是某个数字)时,它会创建一个具有M个此类数组默认值的数组。例如,如果我有一个数组 int[],就会有 M 个零。现在我有了一个包含对象的数组,我希望有 M 个空对象,从索引 0 到索引 M-1。

但是,当我第一次在索引 M-1 处分配值时:

array[M-1] = obj;

我得到一个 java.lang.ArrayIndexOutOfBoundsException: M

显然我误解了一些东西,但我不知道它是什么......你能帮我弄清楚吗?

编辑:我把我的评论放在下面,可能会有所帮助。

假设我有一个整数数组,例如

int[] array = new int[3]; 

当这个语句运行时,我想 - 如果我错了,请纠正我 - 如果我打印我的数组,我将得到 [0, 0, 0],即我将有零(int[] 的标准值)数组)位于索引 0、1 和 2(因为我定义了长度 3)。

现在,如果我尝试这样做:

array[2] = 5 

我应该得到 [0, 0, 5] 而不是 ArrayIndexOutOfBoundsException 因为索引在分配时已经存在 - 它是一个固定数组,而不是一个从大小零开始并增长到容量(甚至更多)的动态数组!

这正是我在代码中所做的 - 唯一的区别是,我有对象而不是整数。因此,如果我说的是对的,那么我的代码中的其他地方有问题,我应该将其发布在另一个问题中。

编辑2:请检查Cache Implemented Using an Array - ArrayIndexOutOfBoundsException (Java)

最佳答案

问题是 x 是否超出 0..M-1 的边界。

例如,假设您尝试在 x = 0 时分配 array[x-1]。

然后你会得到这个 ArrayIndexOutOfBoundsException

关于java - ArrayIndexOutOfBoundsException - 数组本身没有初始化为默认值吗? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028853/

相关文章:

java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : 15

java - 确定 ByteBuffer 中的字节数

java - 从对象中获取类名

java - 如何将表单中的日期插入到数据库中类型为Datetime的列中

java - 在 Android 中发布消息时出现 Twitter 错误?

javascript - 如何在单个语句中对 $$ ('selector' ) 数组使用 PrototypeJS .wrap() ?

java - 如何在java中获取二维数组列表的最大值/最小值

python - 在 Python 中编辑多维数组

java - 修复 ArrayList 中的 IndexOutOfBounds 异常

c++ - 未定义的清理无法检测到简单的堆栈越界错误