下面是目前所遇到的情况,有待后续补充,也欢迎各位评论。
- 字符串变量没有初始化。
String str = null;
str.concat("你好");
- 接口类型的对象没有用具体的类初始化就去使用。
Map map;
Map map = new Map();
- 字符串和文字比较时,写法不对。同样是比较字符串str是否为a,第一种写法,如果str对象为null,必然不能调equals方法。所以推荐第二种写法。
str.equals(a);
"a".equals(str);
-
使用String.valueOf()方法代替toString() 当需要对象转为字符串时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印"null" -
返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候就能避免许多不必要的NullPointerException
当一个对象的值为空,可以这样判:
String str = "";
String str = null;
if (str != null && str != "") {
...
}
提一嘴:String类型在内存中的分配情况
对于通过new产生一个字符串(“Hello”)时,会先去常量池中查找是否已经有了”Hello”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。
|