java中两大异常:空指针异常和数组越界异常

  一、空指针异常
  空指针异常是运行期的异常,编译的时候是不会检查的,只有运行的时候才会抛出,一般情况下如果出现了空指针异常,事先你不知道会有这个异常,就说明你的程序有bug,当然就要找出这个bug,然后在变量调用之前先给它赋值,另外有一种情况,你事先知道某个操作会抛出空指针异常,常见一些非法的操作,但是又无法避免用户执行这个操作,就可以通过try,catch块捕获这个异常,然后给用户一个反馈信息,告知这个操作是非法的,因为如果你直接抛出异常的话,用户可能会看不懂,比如抛出了java.lang.NullPointerException,一般的软件使用者是看不懂的,你试想一下如果你在使用一个软件时时候,忽然之间抛出了一大堆异常,你肯定会埋怨这个软件,竟然会出现这样的低级错误。下面给大家举一个实例,是我前两天遇到过的一个空指针异常。
 
第一步:首先建一个学生类(我用的是eclipse)如下图:
属性是我自己随便定义的你可以自己修改,方法你可以自己写也可以用系统自动添加。在eclipseSource(点击)
第二步:建一个新的类如下图:
如果把该句注释掉以后会产生空指针异常(空指针)如下:

如果不注释就不会出现空指针异常.

出现上述的原因是因为你在实例化时没有达到上述的数组的长度,数组中的元素还有没有实例化完全。

 

上述例题中的完全代码如下哦!

学生类:

public class Student {

    private String name;

    private int age;

    private int score;

    private int lable;

   

   

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }

    public int getScore() {

       return score;

    }

    public void setScore(int score) {

       this.score = score;

    }

    public int getLable() {

       return lable;

    }

    public void setLable(int lable) {

       this.lable = lable;

    }  

}

 

 

SwitchTest来如下

public class SwithcTest {

    public static void main (String args[]){

      

       Student[] stuArr = new Student[10];

      

       Student student  = new Student();

       //添加student1

       student.setName("hans");

       student.setAge(23);

       student.setScore(60);

       student.setLable(1);

       stuArr[0] = student;

      

       Student student1  = new Student();

       //添加student2

       student1.setName("rose");

       student1.setAge(24);

       student1.setScore(90);

       student1.setLable(2);

       stuArr[1] = student1;

      

       Student student2  = new Student();

       //添加student3

       student2.setName("good");

       student2.setAge(25);

       student2.setScore(80);

       student2.setLable(3);

       stuArr[2] = student2;

      

       for(int i = 0;i<stuArr.length;i++){

           if (stuArr[i]!=null)//把该句注释掉以后会产生空指针异常(空指针)

              System.out.println(stuArr[i].getLable()+"号"+ stuArr[i].getName()+"---"+ stuArr[i].getScore());

       }

    }     

}

 

二、数组越界异常

 

举例:

你把第二个类代码中( Student[] stuArr = new Student[10];)10改成小于你实例化学生的个数0、1、2就会出现越界异常

 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

    at Student.SwithcTest.main(SwithcTest.java:31)

注:下标从0开始,最大为 数组名.length    一定要注意哦!!!!!!!!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值