关注“Java架构栈”微信公众号,回复暗号【Java面试题】即可获取大厂面试题
异常案例
对很多Java初学者来说,在学习的初期是很容易遇到各种异常的,就比如咱们今天要讲的这个空指针异常。所谓“授之以鱼,不如授之以渔”,波哥今天就以一个实际的案例来给大家进行讲解,让你真正明白异常的产生原因,并熟练掌握其解决过程。我们先来看看下面这个代码案例:
public class Test {
public static void main(String[] args) {
String str=null;
if(str.equals("qianfeng")){
System.out.println("没问题,相等");
}else {
System.out.println("有问题,不相等");
}
}
}
如果我们运行上面的代码,就会出现如下异常:
Exception in thread "main" java.lang.NullPointerException //空指针异常
at Test.main(Test.java:4)
异常原因
那么上述异常是怎么产生的呢?又该如何解决?这对初学者来说,可能真的无从下手。
其实这种异常要解决起来并不难,只是很多初学者遇到异常时通常都不会查看异常信息,而是打算直接查看代码来找出原因。当然,在代码很少的情况下,这样做是可以的。但这样会养成一个不良的习惯,也就是会在后续写代码的过程中,经常忽视查看异常信息。如果在代码很多的情况下,还是在代码中直接查找异常,这样做的效率是极低的,而且还可能无法找到异常引发的原因。
实际上,解决异常的正确方式,首先应该是查看控制台的异常信息,比如该案例的控制台中就出现了NullPointerException 这个异常提示,并且控制台还告诉了我们这个异常出现的具体位置:
at Test.main(Test.java:4)
所以只要大家认真的查看了这个异常信息,由这一行异常信息我们就可以确定,在 Test 这个类的第4行出现了空指针异常,那么我们只需要直接去查看第4行代码即可:
if(str.equals("qianfeng"))
也就是说,在执行if条件中的str.equals("qianfeng")时出现了空指针异常,我们只需要仔细观察这一行代码,看看哪个对象为空就可以了。通过仔细的检查,我们发现是str对象为空,忘了给该对象赋值了,所以接下来我们对此做出一点改变,代码如下:
public class Test {
public static void main(String[] args) {
String str=null;
if("qianfeng".equals(str)){
System.out.println("没问题,相等");
}else {
System.out.println("有问题,不相等");
}
}
}
另外大家要注意,我们使用equals()方法时,要遵循“常量在前变量在后”的原则,否则就很容易出现空指针异常。
小结
通过以上这个案例我们会发现,在学习的过程中,遇到问题不可怕,最重要的是要形成自己的一套分析解决问题的思路!另外基础知识薄弱的童鞋,也可以在网上查阅资料来巩固学习,比如在千锋教育的官网上就能找到很多免费的Java学习资料。当然你也可以在B站上搜索千锋Java,也可以找到很多免费的Java学习视频。
最后如果你还有其他问题,就在评论区给我留言吧,波哥看到了会及时给你解答。关注Java架构栈,干货天天都不断。