当一个方法返回的是一个Object时,应使用==null来判断是否为空,例如在Servlet中的session判断用户是否登录可以用如下的代码
if (session.getAttribute("LoginUser")==null){
.............
}
但是如果是一个String类型的变量,或者某一个方法返回的是String类型的结果。其判断为空的方式又不一样了。需要使用String类中的equals方法。例如在JSP中获取URL中的参数,为保险起见,可以先判断这个参数是否为空,不空再获取。如果直接获取,一旦这个参数没有,www.linuxidc.com 会造成空指向异常。代码如下
if (request.getParameter("id").toString().equals(null)){
out.println("未提供参数")
}else{
String id=request.getParameter("id").toString()
out.println(id)
}
假设页面地址为 http://localhost/test.jsp
如果不加判断 直接使用
String id=request.getParameter("id").toString()
out.println(id)
会造成空指向异常,而使用了判断后,这种情况下不报错,在页面上显示“未提供参数”。如果地址栏输入的是http://localhost/test.jsp?id=123
则页面输出“123”
另外在字符串的“空”验证时还要注意一种情况,那就是“”空。
如果假想Java中有指针的概念的话,String a为null空,则表示变量没有指针去映射它;而String a为“”空,则表示该字符串有指针映射,但是映射到的内容为空。
先把int类型的数据转换成String类型,然后判断String类型的数据是否为空。
示例代码:
int point
String val=point +"" if("".equals(val)){ // do something...}
PS:int point不是对象,int类型为空时默认为0。
还有方法是:
如果point是int类型,则得到的结果是不可能是null的。
如果插入一条数据时没有插入给字段,而数据库里默认是null的值的话,可以使用 Integer point= GiftInfo.getPoints()
然后判断point是否等于空。
示例代码:
Integer point= GiftInfo.getPoints()
if(point == null){ // do something...}
PS:GiftInfo.getPoints返回的是Integer类型,Integer类型是包括基本类型的包装类,不给赋值的时候为null。
参考资料
判断int类型是否为空.CSDN博客 [引用时间2017-12-27]