三元运算符六点解读(也叫三目运算符)

三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。
表达式:“()? :”。
()中进行二元运算
?在运算,就形成三元运算符
格式:
1.如名字表示的三元运算符需要三个操作数。
语法为:条件表达式?表达式1:表达式2。
说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
其逻辑为:“如果条件表达式成立或者满足则执行表达式1,否则执行第二个。”常用在设置默认值,例如某个值不一定存在,则判断这个值是否存在,不存在给默认值(表达式2)。
如:
int a = 10; int b = 20;
a==b?10:20; 结果为20
2.其中如条件语句为真执行表达式1,否则执行表达式2.简单的例子就不举了,来点其它的。在JDK1.5以前的版本中,表达式1和表达式2都要求是相同的类型,比如都是String或者char之类的,在JDK1.5以后,有了自动拆箱和装箱的原因,两者只要其中一种或者两者都能被拆箱即可,比如表达式1为Integer,而表达式2为int类型的,比如如下
1 int a = 1;
2 Integer b = 2;
3 boolean c = ture;
4 int d = c ? b : a;
3.还有个需要注意的是,如果表达式1和表达式2的类型不相同,那么他们需要对交集类型的自动参考转换。例如如下这段代码

1 String str = “abc”;
2 StringBuilder strbu = new StringBuilder(“def”);
3 boolean boo = true;
4 CharSequence cs = boo ? str : strbu;
4.因为String和StringBuilder都实现了CharSequence这个接口。
确定条件表达式结果类型的规则的核心是以下3点:
  1 如果表达式1和表达式2操作数具有相同的类型,那么它就是条件表达式的类型。
  2 如果一个表达式的类型是byte、short、char类型的,而另外一个是int类型的常量表达式,且它的值可以用类型byte、short、char三者之一表示的,那么条件表达式的类型就是三者之一
  3 否则,将对操作数类型进行二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型
以上的三点可以用如下的代码来帮助理解:

1 char ch = ‘a’;
2 int num = 0 ;
3 boolean bool = true;
4 System.out.print( bool ? ch : 0);  //这里不是 bool ? ch : num ,那样会打印两个97
5 System.out.print( !bool ? num : ch);
5.这段代码打印的是 a97 。很显然,第二点的规则应用到第一个打印上了,返回的是char,第三点的规则应用到第二个打印上了,返回的是int 。但是谁会在乎这个顺序导致的打印结果,所以为了避免不必要的麻烦,很显然显式强制类型转换是个很不错的选择 -_-

1 char ch = ‘a’;
2 int num = 0 ;
3 boolean bool = true;
4 System.out.print( bool ? (char)ch : (char)0);
5 System.out.print( !bool ? (int)num : (int)ch);
结果还是a97.
6.还有值得注意的是 表达式1 和 表达式2 不一定非得是数据类型,还可以是自己定义的方法,只要方法有返回值就行。例如
1 static int test1(int i) {
2 i += 1;
3 return i;
4
5 }
6
7 static int test2(int i) {
8 i += 2;
9 return i;
10 }
11
12 public static void ternary() {
13 boolean boo = false;
14 int c = boo ? test1(1) : test2(2);
15 }
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三目运算符又称为三元运算符和条件运算符,在多种编程语言中都有使用。它的作用是进行条件判断,可以理解为if条件判断的简化版。\[1\]一元运算符只需要一个数据进行操作,例如取反、自增、自减;二元运算符需要两个数据进行操作,例如加法、减法、乘法等等;而三元运算符则需要三个数据进行操作。\[2\]在JavaScript中,三目运算符的基本格式是:条件表达式 ? 表达式1 : 表达式2,其中条件表达式为真时返回表达式1,否则返回表达式2。\[3\]在Python中也有类似的三目运算符,但语法略有不同。 #### 引用[.reference_title] - *1* *3* [什么是三目运算符三目运算符怎么使用?](https://blog.csdn.net/zy1992As/article/details/127884410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JAVA 系列——>三元运算符三目运算符)](https://blog.csdn.net/qq_16397653/article/details/103601970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值