以前没有注意到问题,下面的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?
分享到:
相关推荐
2. **三元运算符**(JDK的Bug2) 三元运算符(? :)是Java中的一个简洁的条件表达式,用于替代if...else语句。在某些特定条件下,之前的JDK版本可能存在解析或执行三元运算符时的错误,这可能导致编译错误或运行时...
版本2.0.5和2.0.2的变更主要是增强用户体验和修复bug,例如增加了更多的开放API,支持表达式换行,修正了三元运算符的类型兼容问题,以及处理自定义函数返回类型为void的情况。 总的来说,IKExpression是一个面向...
这里`columnName`的定义是`"IF(%s is not null,%s,'')"`,这是一个典型的SQL三元运算符,用于检查某个列值是否为null,如果非null,则返回该列值,否则返回空字符串。`t`代表列名,两次被插入到格式化字符串中,这...
` `&&` `||`、三元运算符 `? :` 以及特有的集合运算符 `#`。此外,还支持括号优先级,并对 `&&`、`||` 和 `? :` 进行了短路优化处理。 ##### 1.2 升级变更(ChangesLog) - **Version 2.1 变更** - 新增 `org....
2. 避免过多的`if-else`嵌套,考虑使用三元运算符或策略模式简化逻辑。 3. 使用`for`循环而非`while`循环,当条件允许时。 ### 异常处理 异常处理应该具有针对性,避免过度使用`catch (Exception e)`。推荐的做法是...
=, >, <, >=, )的使用,以及三元运算符。 3. 循环控制:包括for循环和while循环,理解循环条件和循环体内的代码执行。 4. 基本数学运算:加减乘除、取模等,以及整数和浮点数的处理。 二、逻辑1(Logic-1) 逻辑1...
3. **表达式语言**:Kotlin鼓励使用表达式而非语句,如函数调用、if表达式、三元运算符等,使得代码更加简洁。 4. **函数式编程支持**:Kotlin内置了高阶函数、lambda表达式、let、run、with等函数,支持函数式编程...
引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 [Page] 39.启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机...
5. **运算符支持**:OGNL支持标准的算术、比较和逻辑运算符,以及三元条件表达式(`? :`)。 **二、2.6.11版本的改进与特性** 1. **性能优化**:2.6.11版本可能包含了对OGNL表达式解析和执行速度的优化,提高了...
26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除时无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 29、修复了后台操作中如果 session 过期重新登陆后...
26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除时无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 29、修复了后台操作中如果 session 过期重新登陆后...
1. **基本语法**:JavaScript的基础包括变量声明(var, let, const)、数据类型(number, string, boolean, null, undefined, object, array, symbol, bigint)、运算符(算术、比较、逻辑、位、赋值、三元)、流程...
前端负责将高级语言(如C、C++等)转换为中间表示(Intermediate Representation, IR),如三元运算符表示法或通用中间语言(GIMPLE)。这一阶段涉及词法分析、语法分析和语义分析等步骤。后端则将IR转化为针对MIPS...