public class Test{
public static void main(String[] args){
char x = 'X';
int i = 0;
System.out.print(true ? x : 0);
System.out.print(false ? i : x);
}
}
为什么打印的是:X88,而不是XX,请大家指点一下。作者: liuzhming 时间: 2013-7-23 11:30
在下面的语句中,x取得类型依赖于另一个参数的类型。如果是字面值的int类型,那么x还是原来的类型,该int类型转换为char类型。如果是字面值short,byte等除boolean以为的基本类型,x要转成这些类型。如果是int变量类型,那么x转换为int类型。代码如下:
public class Test1 {
public static void main(String[] args)
{
char x= 'X';
int i = 0;
System.out.println(true ? x : 0);
System.out.println(true ? 0 : x);
System.out.println(false ? x : 0);
System.out.println(false ? 0 : x);
System.out.println(true ? x : i);
System.out.println(true ? i : x);
System.out.println(false ? x : i);
System.out.println(false ? i : x);
}
}作者: 张yy 时间: 2013-7-23 11:34 本帖最后由 张yy 于 2013-7-23 11:38 编辑
首先回答这两个的区别
System.out.print 这个是输出后不换行
System.out.println 这个输出后要换行
但为什么前一个输出的是X后一个输出的是数字,这个要看输出的是什么内容了。
因为你这两个输出里面都是一个表达式,print是根据计算的结果来进行输出的,对于你这道题
true ? x : 0 的问号后第一个参数是字符型的,所以直接输出了X
false ? i : x 的问号后的第一个参数是整形,所以会按整形来输出所以输出了X的asc码也就是88
如果你想输出得到XX的话,把X的char转换成String类型就可以了:
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String x = "X";
int i = 0;
System.out.print(true?x:0);
System.out.print(false?i:x);
}