java中三目运算符?

Python018

java中三目运算符?,第1张

先学java的叫它,三元运算符;先学c的叫它三目运算符

即( ?: )

如名字表示的三元运算符需要三个操作数。

语法为:条件表达式?表达式1:表达式2。

说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。

其逻辑为:“如果为真执行第一个,否则执行第二个。”

这是编译器的自动装箱/拆箱转换引起的问题,

自动装箱/拆箱的特性,只要一个运算中有不同的类型,涉及到类型转换,那么编译器会往下(基本类型)转型,再进行运算。 就是说,如果运算中有int和Integer,Integer会先转成int再计算。

所以你的代码中,最后一行

i = StringUtils.isEmpty(ComNo)?RecordType:0

实际的运行会是这样 i = StringUtils.isEmpty(ComNo)?RecordType.intValue():0

RecordType为null,所以会报错。

可以改成:i = StringUtils.isEmpty(ComNo) ? RecordType : Integer.valueOf(0)

保持类型的一致就不会自动转型了