解决Java中int不能为空而Oracle数据库中Number可以的问题

2014-11-24 18:17:46 · 作者: · 浏览: 0

1.先来谈谈int和Integer


int永远也不会为空,因为它是primitive数据类型。初始时缺省为0,而不是null。
Integer是对象类,倒可能是null。


因此
int i1;
Integer i2;


此时
i1==0 为true
i2==0 会出错吧
i2==null为true



2.修改int为Integer的解决方案


将配置文件改为:


JavaBean中做以下修改:


public void setA252(Integer a252) {
if(a252 != null){
this.a252 = a252;
}
else{
this.a252 = 0;
}
}


3.JDBC的解决方案


String result = rs.getString(1);


if (result != null){
a252 = Integer.parseInt(result);
}
else{
a252 = 0;
}


4.装箱、拆箱及其他


类型转换是在1.5中才有的。在明白怎么进行判断之前,我们必须明白所谓的类型转换到底是什么东西。在1.5之前,你如果需要把一个int转换为Integer,你就必须做new Integer(intValue);这样的代码工作。因此在1.5中,Java的缔造者们认为这种方法过于低效率,因此引入了C#中的auto-boxing理念,因此你可以用类型转换的方法创造出一个Integer类实例。但是,其中的原理还是和以前一致的。因为在int类型中,永远不可能有null的取值,因此也不可能生成一个null的Integer对象。


另外可以强制转换下,也就是 (Object)int x == null;