java 三目运算符
publicstaticvoidmain(String[]args){inti=0;charx="b";System.out.println(true?x:0);Syst...
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
原理是什么? 怎么换算出来的? 展开
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
原理是什么? 怎么换算出来的? 展开
3个回答
展开全部
首先,对于a?b:c的运算符,当a为true时,运算结果为b,当a为false时,运算结果为c;
然后,上述题目的解释:
运算时,必须是处于同一种数据类型进行运算的,所以,true?x:1111111110中,由于x是char型,1111111110是int型,而int型大于char型,所以运算时x将被自动转换成int型数据进行运算,'b'转换成int后的值等于98,所以,输出98;
同理,false?i:x中,i为int型、x为char型,所以也一律转换成int型进行运算,即x被转换成了98,由于?左侧的值为false,所以输出x的值,即98.
还是不明白的话可以问我^_^
然后,上述题目的解释:
运算时,必须是处于同一种数据类型进行运算的,所以,true?x:1111111110中,由于x是char型,1111111110是int型,而int型大于char型,所以运算时x将被自动转换成int型数据进行运算,'b'转换成int后的值等于98,所以,输出98;
同理,false?i:x中,i为int型、x为char型,所以也一律转换成int型进行运算,即x被转换成了98,由于?左侧的值为false,所以输出x的值,即98.
还是不明白的话可以问我^_^
展开全部
这个问题主要考察的应该不是三目运算符,而是java运算的自动转换。
i为int类型
x为char类型
第一行计算x和0,此时0可以被看作是char类型,所以x并没有被转换,而是直接输出B
第二行计算x和1111111110,而1111111110是无法保存为char类型的,只能当作int,所以此时x需要被强转成int之后再进行运算,char类型的x在强转成int之后就变成了他的asc码。也就是66。
第三行,计算x和i,i是int类型,所以与第二行同理,x被自动转换成int,结果为66。
如果问题解决,请采纳本答案
i为int类型
x为char类型
第一行计算x和0,此时0可以被看作是char类型,所以x并没有被转换,而是直接输出B
第二行计算x和1111111110,而1111111110是无法保存为char类型的,只能当作int,所以此时x需要被强转成int之后再进行运算,char类型的x在强转成int之后就变成了他的asc码。也就是66。
第三行,计算x和i,i是int类型,所以与第二行同理,x被自动转换成int,结果为66。
如果问题解决,请采纳本答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个运算符就像就一门语言的关键字一样,你只需要知道这个怎么用,这种格式就是语言的一种设计,所以学语言不要在这个方面死板,难不成你还要问为什么整形要用int关键字,对不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询