问题描述:
String A = "aaa";
String B = null;
String C = A + B == null ? "" : B // null
字符串和三元表达式式相加时本以为 String C = A + “”,实际上返回值是null
原因分析:
先来看看运算符优先级,可以看出 + 优先级是大于 ?:
// 得出
String A = "aaa";
String B = null;
String C = A + B == null ? "" : B
= ( A + B ) == null ? "" : B
= ( "aaa" + null ) == null ? "" : B
= "aaanull" == null ? "" : B
= false ? "" : B
= B
= null
解决方案:
将三元表达式用小括号包起来String A = "aaa";
String B = null;
String C = A + (B == null ? "" : B) // "aaa"
参考:
1、字符串和三元运算符字符串相加优先级的问题
2、java通过+拼接字符串导致的无效SQL,三目运算符与+运算符结合使用时需要注意了