Java 中数组索引越界异常
原文:https://www . geesforgeks . org/array-index-越界-java 中的异常/
Java 支持数组作为数据结构的创建和操作。数组的索引是一个整数值,其值在区间[0,n-1]内,其中 n 是数组的大小。如果请求一个负数或大于或等于数组大小的索引,那么 JAVA 会抛出一个 ArrayIndexOutOfBounds 异常。这与 C/C++不同,在 C/c++中,绑定检查没有索引。
ArrayindexOutofBoundSexception是一个只在运行时抛出的运行时异常。Java 编译器在编译程序时不会检查这个错误。
Java 语言(一种计算机语言,尤用于创建网站)
// A Common cause index out of bound
public class NewClass2 {
public static void main(String[] args)
{
int ar[] = { 1, 2, 3, 4, 5 };
for (int i = 0; i <= ar.length; i++)
System.out.println(ar[i]);
}
}
预期输出:
1
2
3
4
5
原始输出:
运行时错误引发异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at NewClass2.main(NewClass2.java:5)
这里如果你仔细看,数组的大小是 5。因此,当使用 for 循环访问它的元素时,最大索引值可以是 4,但是在我们的程序中,它一直到 5,因此是异常。
让我们看看另一个使用数组列表的例子:
Java 语言(一种计算机语言,尤用于创建网站)
// One more example with index out of bound
import java.util.ArrayList;
public class NewClass2
{
public static void main(String[] args)
{
ArrayList<String> lis = new ArrayList<>();
lis.add("My");
lis.add("Name");
System.out.println(lis.get(2));
}
}
这里的运行时错误比上一次提供的信息要多一点-
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at NewClass2.main(NewClass2.java:7)
让我们详细了解一下:
- 这里的索引定义了我们试图访问的索引。
- 大小给了我们关于列表大小的信息。
- 由于大小是 2,我们可以访问的最后一个索引是(2-1)=1,因此是例外。
访问数组的正确方式是:
for (int i=0; i<ar.length; i++){
}
正确代码–
Java 语言(一种计算机语言,尤用于创建网站)
// Correct code for Example 1
public class NewClass2 {
public static void main(String[] args)
{
int ar[] = { 1, 2, 3, 4, 5 };
for (int i = 0; i < ar.length; i++)
System.out.println(ar[i]);
}
}
Output
1
2
3
4
5
版权属于:月萌API www.moonapi.com,转载请注明出处