java数组踩过的坑
导读
通过阅读本文,可以了解如下的一些信息:
- 了解在运用数组的时候,可能会犯的一些基本的错误
- 了解数组的常见异常,并且知道如何捕获这些异常
数组的一些基本坑
java数组中只能保存相同类型的数据
实例
import java.util.Arrays;
public class Demo{
public static void main(String[] args){
int[] arrayName={1,2,"4",5};
System.out.println(Arrays.toString(arrayName));
}
}
运行结果
Demo.java:10: 错误: 不兼容的类型: String无法转换为int
int[] arrayName={1,2,"4",5};
^
1 个错误
当出现不同类型的数据在数组中的时候会出现编译错误。
在数组声明中包含数组长度永远是不合法的
实例
public class Demo{
public static void main(String[] args){
int[5] arrayName;
}
}
运行结果
Demo.java:10: 错误: 需要']'
int[5] arrayName;
^
Demo.java:10: 错误: 不是语句
int[5] arrayName;
^
Demo.java:10: 错误: 不是语句
int[5] arrayName;
^
3 个错误
当在声明的时候定义数组长度,也会出现编译错误。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
数组构造的时候必须指定长度
假如没有指定数组的长度会出现编译错误如下
实例
public class Demo{
public static void main(String[] args){
int[] arrayName=new int[];
}
}
编译结果
Demo.java:10: 错误: 缺少数组维
int[] arrayName=new int[];
^
1 个错误
数组一旦定义,就只能通过下标添加数据
实例
import java.util.Arrays;
public class Demo{
public static void main(String[] args){
int[] arrayName=new int[4];
arrayName[0]=1;
arrayName[1]=2;
arrayName[2]=3;
arrayName[3]=4;
System.out.println(Arrays.toString(arrayName));
}
}
运行结果
[1, 2, 3, 4]
假如通过赋值添加会出现编译错误
实例
public class Demo{
public static void main(String[] args){
int[] arrayName=new int[4];
arrayName={1,2,3,4};
}
}
编译结果
Demo.java:11: 错误: 非法的表达式开始
arrayName={1,2,3,4};
^
Demo.java:11: 错误: 不是语句
arrayName={1,2,3,4};
^
Demo.java:11: 错误: 需要';'
arrayName={1,2,3,4};
^
3 个错
数组一旦定义,长度不可修改
实例
public class Demo{
public static void main(String[] args){
int[] arrayName=new int[4];
arrayName.length=2;
}
}
编译结果
Demo.java:11: 错误: 无法为最终变量length分配值
arrayName.length=2;
^
1 个错误
java数组的异常
主要有两种异常:
- 超出数组的索引异常(ArrayIndexOutOfBoundsException)
- 空指针异常(NullPointerException)
超出数组的索引异常
实例
public class Demo{
public static void main(String[] args){
int[] arrayName=new int[4];
try{
System.out.println(arrayName[4]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("扔出异常:"+e);
}
}
}
运行结果
扔出异常:java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
空指针异常
实例
public class Demo{
public static void main(String[] args){
int[] arrayName=new int[4];
try{
arrayName=null;
System.out.println(arrayName.length);
}catch(NullPointerException e){
System.out.println("扔出异常:"+e);
}
}
}
运行结果
扔出异常:java.lang.NullPointerException: Cannot read the array length because "<local1>" is null
这里异常的捕获主要是通过try…catch来捕获的,这两种异常是(ArrayIndexOutOfBoundsException和NullPointerException)对其进行捕获就知道是否有异常了。