黑马程序员技术交流社区
标题:
条件操作符的问题
[打印本页]
作者:
王召轩
时间:
2013-12-9 11:38
标题:
条件操作符的问题
为什么这两个的输出不同呢:Q
char a ='A';
int b =0;
System.out.println(true ? a:0);
System.out.println(false ? b:a);
复制代码
作者:
王国库
时间:
2013-12-9 11:53
a是字符型,b是整型。
作者:
赵青超
时间:
2013-12-9 12:57
//测试:
char a ='A';
int b =0;
//char变量:int值,输出char变量对应的ASCII值,类型自动转换
System.out.println(true ? a:0);
System.out.println(true ? a:b);
System.out.println(false ? 0:a);
System.out.println(false ? b:a);
//三元运算 char值:int值,输出char值对应的ASCII值,类型自动转换
System.out.println(true ? 'A':0);
System.out.println(true ? 'A':b);
System.out.println(false ? 0:'A');
System.out.println(false ? b:'A');
复制代码
作者:
四五六七八
时间:
2013-12-9 14:06
设x和y分别是第二个和第三个操作数的类型,那么:
1如果x和y为同一类型,则该类型即是条件表达式的类型。
2如果从x到y存在一个隐式转换,那么y是条件表达式的类型。
3如果从y到x存在一个隐式转换,那么x是条件表达式的类型。
char a ='A'; int b =0;
System.out.println(true ? a:0);//适用于第1点 0这个值会被保存为char(因为0 可以用两个字节保存 即为char) 条件表达式结果类型转化为char
System.out.println(true ? a : 65536);//适用于第2点 65536只能被存储4个字节 即为int
System.out.println(false ? b:a);//适用于第3点 a--->b隐式转换 即b的类型为条件表达式的结果类型
这些转换有些麻烦 还不如不用
作者:
做个有理想的人
时间:
2013-12-9 14:27
public class Demo {
//低于int型的数据进行运算就都会被提升为int型
public static void main(String[] args) {
char a ='A';
int b =0;
System.out.println(true ? a:b);//65,第一个输出a被提升为int型了,因为b是int类型
System.out.println(true ? a:0);//A,第二输出a是和0比较,0是什么类型是不清楚的,所以a类型不变了
System.out.println(false ? b:a);//65,第三个输出b类型是int,所以a被提升到了int类型
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2