java三元运算符的bug??

以前没有注意到问题,下面的TestCase运行报空指针异常。

 

 

public class A extends TestCase {

	public void testA() {
		Integer num = null;
		assertNull(false ? Integer.valueOf(0) : num);
		assertNull(false ? 0 : num);
	}
}
 

 

class文件分析:

 

 

false ? Integer.valueOf(0) : num

 

public void testA();
  Code:
   Stack=1, Locals=3, Args_size=1
   0:   aconst_null
   1:   astore_1
   2:   aload_1
   3:   astore_2
   4:   return

 

vs

 

false ? 0 : num

 

public void testA();
  Code:
   Stack=1, Locals=3, Args_size=1
   0:   aconst_null
   1:   astore_1
   2:   aload_1
   3:   invokevirtual   #15; //Method java/lang/Integer.intValue:()I
   6:   invokestatic    #21; //Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
   9:   astore_2
   10:  return

 

总结:由于三元运算符导致,由于num为null,转为int时会出错。这算不算JDK6的bug?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值