java中三元运算符详解

什么是三元运算符呢!

无疑其操作元有三个。第一个是表达式,剩余两个是值,条件表达式为真时,取第一个值,为假时,取第二个值。 

表达式1和表达式2要为可以可以赋给接收变量的类型(或可以自动转换/可以强制转换)

示例代码如下: 
boolean a = 20 < 45 ? true : false 

三元运算符的优先级高于赋值运算符,故第一个表达式为真,取第一个值,返回 a=true; 

三元运算符用于做判断,其等价的if-else语句如下: 
boolean a; 
if (20 < 45) { 
a = true; 
}

else{ 
a = false; 

很多时候三元运算符可以和if-else语句进行互换,它们两个可以等价的实现判断的效果,但是三元运算符和if-else还是有不同之处的,下面我们来具体谈谈不同之处: 

1、 两者之间对于返回值有不同的要求。三元运算符是必须要有返回值的要求,其运算后一定有一个返回值返回给开发人员使用,而if-else不一定有返回值,其执行结果可能是赋值语句或者是输出语句。 

2、两者的性能不同。三元运算符的运算性能高于if-else。

3、两者使用范围不同,在ireport的一些动态执行的情况下,只能用三元运算符而不能用if-else语句,当然在大多数情况下两者是可以等价互换的 。

4、两者的语言特性不同,三元运算符设计到一种双目运算符提升的特性, 
所谓双目数值提升,在双目运算符java的开发环境下可以简单的理解为类型转换的问题。 
1.如果定义了数据类型的变量和未定义数据类型的变量参与双目运算符的后双目运算,那么返回的结果就是范围大(精度高)的类型。 
2.如果两个定义了数据类型的变量参与双目运算符的后双目运算,那么返回的结果就是范围大(精度高)的类型。 
3.如果直接进行数值的比较,则自动转型为范围大(精度高)的类型。

参考原文:https://blog.csdn.net/qq_35868412/article/details/81083672

 

posted @   笑傲江湖-令狐冲  阅读(3283)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示