java 三目运算符

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:41:20
public static void main(String[] args){
int i=0;
char x ="b";
System.out.println(true?x:0);
System.out.println(true?x:1111111110);
System.out.println(false?i:x);
}
求详细讲解,分析过程。
我知道的是 为什么
System.out.println(true?x:0);输出 b
System.out.println(true?x:1111111110); 输出 66
System.out.println(false?i:x);输出 66
原理是什么? 什么换算出来的?

其实这主要是JAVA重载和基本数据类型自动转型造成的。
JAVA重载:这里主要调用了println(char x) 和println(int x) 两个方法。
基本数据类型自动转型原则中有一条:有多种类型混合运算时,系统将所有类型转换为大的,然后再进行计算。
自动转型顺序:
byte->short(char)->int->long->float->double.
还有0~65535可以认为是int也可以是char。
System.out.println(true?x:0);此处0被认为是char,所以输出b,倘若把0改为65536,则输出66.
同理
System.out.println(true?x:1111111110);此处1111111110已经大于了65535,所以x被自动转型为int再输出,输出66.

System.out.println(false?i:x);也是同理,将x转换为int,输出 66.
其实我讲得也不是非常详细,有兴趣可以仔细看下重载和基本数据类型转型的章节,希望能帮到你。

public static void main(String[] args){
int i=0;//定义变量i初始化值为0
char x ="b";//定义字符x初始化值为“b”
System.out.println(true?x:0);//当?前边的表达式的值为true是输出x,为false时输出0;
System.out.println(true?x:1111111110);//同上
System.out.println(false?i:x);//同上
}
三木运算符很简单,等价于:
例:a = b>c?d:e;
这个式子等价于:
if(b>c)a=d;
else a=e;

三目运算符;格式:
条件语句?表达式1:表达式2
当条件语句是true时,就执行表达式1,false则执行表达式2
--