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

  • 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:希望各位多多指教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值