java.lang.NullPointerException遇到的情况以及解决

下面是目前所遇到的情况,有待后续补充,也欢迎各位评论。

  1. 字符串变量没有初始化。
String str = null;
str.concat("你好");//字符串拼接,报错
  1. 接口类型的对象没有用具体的类初始化就去使用。
Map map;//直接使用map报错
Map map = new Map();//不报错
  1. 字符串和文字比较时,写法不对。同样是比较字符串str是否为a,第一种写法,如果str对象为null,必然不能调equals方法。所以推荐第二种写法。
str.equals(a);//str可能为null
"a".equals(str);
  1. 使用String.valueOf()方法代替toString()
    当需要对象转为字符串时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印"null"

  2. 返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候就能避免许多不必要的NullPointerException

当一个对象的值为空,可以这样判:

String str = "";//值为空,存在对象的引用
String str = null;//不存在对象的引用

if (str != null && str != "") {
...
}

提一嘴:String类型在内存中的分配情况

在这里插入图片描述
对于通过new产生一个字符串(“Hello”)时,会先去常量池中查找是否已经有了”Hello”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”Hello”对象的拷贝对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值