1. 前言
相信各位 Javaer 对于三目运算符(三元运算符)都不陌生,较多情况下使用三目运算符即可节省一个 if-else 语句赋值的编写,笔者也是经常使用三目运算符,前段时间遇到了一点三目运算符的类型转换的坑,便在此记录一下。望更多的朋友能够避免,也加深我对三目运算符的理解。
2. 三目运算符使用
闲话不说,直接上代码。
/**
* 三目运算符使用
*/
public void ternaryOperator() {
boolean switchLog = true;
// 基本类型
int intValue = switchLog ? 1 : 0;
// 引用类型
String strValue = switchLog ? "true" : "false";
}
三目运算符可表达为:布尔表达式 ? 表达式1 : 表达式2
布尔表达式:其结果决定三目运算符的分支情况
表达式1:当布尔表达式为 true,则执行
表达式2:当布尔表达式为 false,则执行
3. 类型转换
在三目运算符的使用过程中,即支持基本类型,也支持引用类型。值得注意的一点是,引用类型为 null 时,也是支持给引用类型赋值的。
特别的,我们关注到了基本类型和其封装类型,于是有了下述代码。
@Test
public void intInteger() {
boolean switchLog = true;
Integer oneExpre = null
Integer result = switchLog ? oneExpre : 0;
System.out.println(result);
}
猜想下这个程序的 result 返回什么,是 null 么?为什么?
试着运行下测试,发现得到以下报错:
java.lang.NullPointerException
at club.chenlinghong.demo