欢迎关注头条号:Java小野猫
面试题
废话不多说,直接上题:
提问:当 a=1,b=2 时,test1 方法的执行结果是什么?思考一分钟。
答案:
解析
在使用三目运算符时,尽量保证两个返回值的类型一致,不然会触发类型转换,转换规则如下:
- 如果返回值 X 和返回值 Y 是同种类型,那么返回类型毫无疑问就是这种类型。
- 如果两个返回值 X 和 Y 的类型不同,那么返回值类型为他们两最接近的父类。举例:// String 和 Boolean 都实现了 Serializable 接口 Serializable serializable = a == b ? "true" : Boolean.FALSE; // 所有类都继承了 Object 类 Object o = a == b ? new ArrayList() : new TernaryOperatorDemo();
- 对于基本数据类型,如果其中一个返回值 X 类型为byte、short或者char,另一个返回值 Y 类型为int,那么若在编译期就能判断出 Y 的取值范围在 X 的取值范围之内,则返回类型为 X 的类型,反之则为 Y 的类型。如果返回值 X 类型不为以上几种,则会触发隐藏类型转换。
- 当基本数据类型和对象数据类型相遇时,三目运算符默认返回结果为基本数据类型。
了解以上规则之后,我们再看来一下 test1 方法。
欢迎做Java的朋友们私信我【资料】免费获取免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
其中覆盖了互联网的方方面面,期间碰到各种产品各种场景下的各种问题,很值得大家借鉴和学习,扩展自己的技术广度和知识面。
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/1800133.html
赞 (2)
打赏 微信扫一扫
见过机械手雄克吗?空手捡飞针,这个机器人太秀了
« 上一篇2019-12-26 10:25:28
中国联通首个召开2020年工作会议 明年七大重点工作引发高度关注
下一篇 »2019-12-26 11:05:09