数组相关常见的三种错误
1.数组声明时数据类型不匹配
错误写法:
public class Test_0506{ public static void main(String[] args) { // 定义的是int类型数组,但实际是String类型 int [] array = new String[3]; } }
Eclipse会提示错误信息,Type mismatch: cannot convert from String[] to int[],如下图提示将array类型改为String[]。
正确写法:
public class Test_0506{ public static void main(String[] args) { String[] array = new String[3]; } }
2.边声明边赋值必须写在同一行
错误写法:
public class Test_0506{ public static void main(String[] args) { int [] array = new int[3]; array = {10, 20, 30}; array2 = {10. 20, 30}; } }
运行代码,报错信息为Array constants can only be used in initializers,英文不好,通过翻译软件知道报错内容是“数组常量只能在初始值设定项中使用”
如下图
正确写法:
public class Test_0506{ public static void main(String[] args) { int [] array = new int[3]; array[0] = 10; array[1] = 20; array[2] = 30; int [] array2 = new int [3]; array2[0] = 10; array2[1] = 20; array2[2] = 30; } }
3.数组下标越界
错误写法:
public class Test_0506{ public static void main(String[] args) { int[] array = {10, 20, 30}; System.out.println(array[3]); } }
数组下标是从0开始,从上述代码可以看出来数组长度是3,下标界限就是0~2,所以array[3]超出下标界限,运行报错信息如下:
java.lang.ArrayIndexOutOfBoundsException表示错误原因是数组下标越界。
正确写法:
public class Test_0506{ public static void main(String[] args) { int[] array = {10, 20, 30}; System.out.println(array[0]); System.out.println(array[1]); System.out.println(array[2]); } }
运行结果: