三元运算符和if-else语句:不同之处。
a) 三元运算符是必须要有返回值,而if-else语句并不一定有返回值,其执行结果可能是赋值语句或者打印输出语句。
b) java三元表达式有字符强转(双目数值提升)的功能,返回值类型为两个返回值中类型精度更高的的那个类型
1) 在java中常见数据类型其范围从小到大(精度由低到高):byte<short<char<int<float<double。
2) jvm在给数值分配数据类型的时候会选取刚好能装下该数据大小精度的数据类型进行分配(如99.0为float,99为byte/short)
c) 三元表达式的性能更好。
d) 举例:
下面用一段代码来解释三元表达式的字符强转功能,以下测试代码也涵盖了很多面试题目,希望各位可以从中理解上述三条规则。
char a=‘a‘;
int i=96;
//规则1,定义了数据类型的变量与未定义变量的数值
System.out.println(2==2?i:9.0); //返回96.0
//jvm给9.0分配数据类型为float,所以返回值类型为float
System.out.println(2==2?98:a); //返回b
//jvm给98分配数据类型为byte/short,所以返回值类型为byte/short,故结果会变为ASCII码98对应的字符
//规则2,两个已经定义数据类型的变量
System.out.println(2==2?a:i);//返回97
//返回值类型为int,返回值为a,返回结果为a的控制字符‘a’对应的ASCII码97
//规则3,两个未定义的数值
System.out.println(2==2?99:9.0);//返回99.0
System.out.println(2==2?99:‘b‘);//返回C
来源:https://www.cnblogs.com/q2546/p/11395659.html