一道三目运算符 | 正确率不足20%(待补充)

声明:本文转载至颜群老师微信公众号:https://mp.weixin.qq.com/s/NxeCQ2b8VeosGctak1BUsg

请说出以下程序的运行结果

public static void main(String[] args) {
	int n1 = 1;
	int n2 = 2;
	System.out.println(n1 == n2 ? 100.0 : 200);
	System.out.println(n1 == n2 ? 'A' : 66);
	System.out.println(n1 == n2 ? 'A' : 66666);
	
	System.out.println(n1 == n2 ? 'A' : n2);
	System.out.println(n1 != n2 ? 'A' : n2);
	
	Map<String, Integer> map = new HashMap<String, Integer>();
	System.out.println(map == null ? 0 : map.get(""));
}

---------------------------------------华丽的分割线-------------------------------------------------

执行结果

200.0
B
666666
2
65
Exception in thread "main" java.lang.NullPointerException

解析

本题的考点是: 三目运算符的类型 转换问题 问题。
boolean ? 表达式1 : 表达式2
1、 三目运算符中,当"表达式1"与表达式2的类型不一致,则运算符结果的类型就是提升后的类型(即进行自动类型转换后的结果)。对应本题中n1 == n2 ? 100.0 : 200
2、对于"整数问题",这里的整数是指"short,byte,char,int"。如果"表达式1"是"short,byte,char",“表达式2"是"int”,则分为以下两种情况:

  • 表达式2是int常量:
    如果“表达式2”在表达式1(short,byte,char)的数据范围内,则能够转为表达式1的类型,对应本题中的n1 == n2 ? 'A' : 66,如果“表达式2”不在表达式1(short,byte,char)的数据范围内,则保持不变。对应题中的n1 == n2 ? 'A' : 6666666
  • 表达式2是变量
    统一进行自动类型提升,对应本题中的n1 == n2 ? 'A' : n2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值