1字符串变量未初始化;
2接口类型的对象没有用具体的类初始化,比如:
List lt;会报错
List lt = new ArrayList();则不会报错了
3当一个对象的值为空时,你没有判断为空的情况。
如果你去操作这个对象就会出现java.lang.NullPointerException
我一般的做法是先判断这个对象是否为空,如下:
if(object!=null){
.......
}
例子
String str1 = someclass.getSomeString();
if(str1.equalsIgnoreCase("YES"))
{
//do something
}
else if(str1.equalsIgnoreCase("NO"))
{
//do something else
}[/code]
这段代码从逻辑上看没有错,但是却有发生NullPointer的隐患,主要在于
String str1 = someclass.getSomeString();
可能导致str1 为null,常见的有
props.getProperty("somekey");
map.get("key");
bean.getName();
等等,这里发生NullPointerException的机会非常大,而且运行情况往往和用户输入的数据有关,所以不容易被发现,常常是开发的时候没问题,一旦送到用户那里去运行了就出问题了。
正确的方法应该是
[code]
String str1 = something;
if("YES".equalsIgnoreCase(str1))
{
//do something
}
else if("NO".equalsIgnoreCase(str1))
{
//do something else
}[/code]
这样就保证了你调用equalsIgnoreCase() 的主体永远也不是null,即使str1等于null,也不会导致程序出错,且从逻辑上讲也是正确的,就大大减少了Exception的机会。