三目运算:
boolean? 表达式1:表达式2;
package excercise;
public class Test01 {
public static void main(String[] args) {
System.out.println(false? 3.6:5.9);//5.9 表达式1和表达式2类型一致 ,返回值为该类型
System.out.println(false? 8.9:7);//7.0 double和int类型不一致 ,返回值为double型
char max=Character.MAX_VALUE;
System.out.println(true? 'a':max);//a 表达式1和表达式2类型一致 , 返回值为该类型System.out.println(true? 'a':98); //a char和整数型字面量 ,char型的范围是0~65535,数值98没有超范围
System.out.println(true? 98:'a'); //a 同上,与表达式1、2的先后顺序无关
int i=98;
System.out.println(true? i:'a');//98int型和char型,返回值为int型
System.out.println((true? 'a':charMax+1));//97 'a'的ASCII码值,数值超出char的范围,返回值为int型
float b=56.0f;
System.out.println(true? 'a':b);//97.0char型和float型。,返回值为float型
}}
总结:
a.当表达式1和表达式2类型相同时,返回值为该类型;
b.当byte、short、char类型 :整数型字面量时:
1)如果整数型字面的范围是0~65535时,则返回类型为(byte、short、char)类型 ;
2)如果整数型字面量的范围超过0~65535时,则返回类型为int型。
c.表达式1和表达式2类型不一致时(除2.时),类型向高精度转化。
(byte、short、char、int)<float、double