前言
三目表达式深入理解,三目表达式局限性比较大,适用于单一业务,更加推荐 if-else等结构分明类语句, 使用三目表达式时,需要注意以下几点:
- 三目表达式的条件必须是布尔表达式。
- 三目表达式的第二目和第三目必须返回相同类型的表达式。
- 三目表达式嵌套使用时,要注意括号的匹配。
两种类型转换模式
第一种转换
@Test
public void testMet1()
{
System.out.println(true ? 'a' : 65536); // 结果为 a
System.out.println(true ? 'a' : 65537); // 结果为97
System.out.println(true ? 'a' : -1); // 无符号整数没有负数,因此为转换数值
}
小型范围类型会向大型范围类型进行扩展转换,第一行代码的65535会被自动当成 short/byte 类型,因此不会转为数值类型。
short类型的最大值是32767,也就是2^15次方当做原码处理,但此时short类型会当做无符号整数进行处理,也就是65536。
在第二个输出语句中, 65537 数自动转为int类型。
第二种转换
@Test
public void testMet2()
{
System.out.println(true ? 1 : 1.0); // 结果为 1.0 (double)
System.out.println(true ? 1 : 1L); // 结果为1(long)
System.out.println(true ? 1 : false); // 结果为1,任何类型都不能转为boolean
}