三元运算符又称为条件运算符,相当于if else的效果。其作用是简化操作和优化代码显示。
以前一直在C#中使用,得到的结果一直是如果两个数据类型不同,则会进行向上转型,如char-->int
char x = 'X'; int i = 0; System.Console.Write(true ? x : 0); System.Console.Write(false ? i : x);
运行这段代码,会得到的结果是:8888.如上面的解释一样。(备注:如果x和i之间没有直接的类型转换,则无法编译通过)
但是,在java中执行,却是不同的结果。
char x = 'X'; int i = 0; System.out.println(true ? x : 0); System.out.println(false ? i : x);
运行这段结果,得到的却是:X88,可以看到三元运算符的结果,与第二个表达式的类型有直接的关系。
对于第一个表达式:true ? x :0 因为x的类型为char,当表达式为真的时候,结果类型为char,得到的结果是X。
对于第二个表达式:false ? i : x,因为i的类型为整型,当表达式为false的时候,结果类型为int,于是char向上转型为整型,输出88。
结论:
1、在不同的开发语言中,一定要注意相同的语句,可能会存在不同的结果。
2、尽量避免在条件运算符两侧,使用不同的数据类型。