数组易错点

易错1:动态初始化与静态初始化不能也同时出现!下面错都因为这个原因。
易错2:赋值越界(下标从0开始,最大下标为 数组名.length-1)当然编译不会出现异常,但运行肯定抛异常(编译主要检查语法,不涉及执行空间的分配)

image.png

易错3:空指针异常
eg:
image.png

image.png

package test;
public class Array {
public static void main(String[] args) {
//定义的时候我们给赋值
int[] score = {3,33,33,4};//静态初始化 第一种
//int[4] score2 = {3,33,33,4};不可指定长度
/*
只能在定义的时候赋值,以下三中写法皆错
int[] age1;
age1[3] = {55,33,33};
int[] age2;
age2[] = {55,33,33};
int[] age3;
age3 = {55,33,33};
*/
int[] age9 = new int[]{4,3,3,3};//第二种
int[] age2;
age2 = new int[]{4,3,3,3};//第三种
//int[] age8 = new int[5]{1,3,3,3,4};//不能指定长度5
//定义的时候系统给赋值(全为0)
int[] age8 = new int[5];//动态初始化 唯一可以定义长度且一定要写 第四种
System.out.println(age8);//输出的是地址
age8[4] = 5;
//System.out.println(age8[]);//错误写法
//System.out.println(age8[5]);//越界运行会报错(从0开始)
for(int i=0;i<5;i++)
{
System.out.println("第"+i+"个值为:"+age8[i]);
}
}
}
others:
//适合不需要索引的循环--取数据
for(double sc:scores){
System.out.println("\n学生的成绩:"+sc+"\t");
sum += sc;
ave = sum/scores.length;
}

你可能感兴趣的:(数组易错点)