Java三目运算符的一些冷知识

来源:互联网 发布:淘宝女装退货率在多少 编辑:程序博客网 时间:2024/05/22 00:39
  • 1、如题,试写出输出结果:
int a = 1, b = 10;int temp1 = 0 < 1 ? a++ : b++;System.out.println("a = " + a + ", b = " + b);System.out.println("temp1 = " + temp1);
  • 2、如题,试写出输出结果:
int c = 1, d = 10;int temp2 = 0 < 1 ? c = c + 1 : d + 1;System.out.println("c = " + c + ", d = " + d);System.out.println("temp2 = " + temp2);
  • 3、如题,试写出输出结果:
char a = 'A';int i = 0;System.out.println((true ? a : 0) + "," + (false ? i : a));

下面先给出上面三道题的答案:
1、a = 2, b = 10
temp1 = 1

2、c = 2, d = 10
temp2 = 2

3、A,65

  • 题1,主要说明三目运算符只执行正确的那一个,temp1得到的值是a++,而a++赋值结果就是a,直到下一步a才变为a+1。

  • 题2,主要的问题出在最后的d+1上面,因为没有打括号,所以就只会选择d,然后temp2再加1得到新的temp2。

  • 题3,这个结果就有点出乎意料了,当执行false ? i : a时,打印出来的结果是65,这很明显是大A的ASC码值,为什么不是A直接被打印出来呢?(这里博主也暂时不知道为什么,等想到了再来结这个贴了)

ps:希望各位多多指教。

原创粉丝点击