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 个错误主要有两种异常:
超出数组的索引异常(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)对其进行捕获就知道是否有异常了。