ToB企服应用市场:ToB评测及商务社交产业平台

标题: 入门篇-其之七-Java运算符(下) [打印本页]

作者: 吴旭华    时间: 2023-11-22 08:57
标题: 入门篇-其之七-Java运算符(下)
一、三元运算符的使用

三元运算符(也称作三目运算符),使用:和?表示,其格式为:布尔表达式 ? 表达式1 : 表达式2
以下是三元运算符作用原理图:

以下是三元运算符在代码中的使用:
  1. /**
  2. * 三元运算符的使用
  3. *
  4. * @author ZhaoCong
  5. * @date 2023-10-25 11:57:21
  6. */
  7. public class Ternary {
  8.     public static void main(String[] args) {
  9.         byte byteValue1 = 20;
  10.         byte byteValue2 = 30;
  11.         byte result1 = byteValue1 > byteValue2 ? byteValue1 : byteValue2;
  12.         System.out.println("result1 = " + result1);
  13.         double doubleValue1 = 40.13;
  14.         double doubleValue2 = 30.28;
  15.         double result2 = doubleValue1 == doubleValue2 ? doubleValue1 : doubleValue2;
  16.         System.out.println("result2 = " + result2);
  17.         String strValue1 = "";
  18.         String result3 = strValue1.length() == 0 ? "strValue1的长度是0" : "strValue1的长度不是0";
  19.         System.out.println("result3 = " + result3);
  20.     }
  21. }
复制代码
运行结果:

三元运算符可以嵌套使用,但不推荐,原因是可读性变差。
  1. String strValue = "iCode504";
  2. int length = strValue.length();
  3. // 不推荐嵌套的写法
  4. String result = length > 0 ? length < 10 ? "strValue的长度在0~10之间" : "strValue的长度超过10" : "strValue的长度为0";
  5. System.out.println("result = " + result);
复制代码
嵌套式写法做进一步简化处理:
  1. String strValue = "iCode504";
  2. int length = strValue.length();
  3. String result = length > 0 && length < 10 ? "strValue的长度在0~10之间" : "strValue的长度不在0~10之间";
  4. System.out.println(result);
复制代码
二、三元运算符和if语句的区别

共同点:三元运算符和if语句的作用都是用作条件判断。但二者也存在一些差别:
1. 语法层面:在大多数情况下,三元运算符语法是一行语句,if语句可能是多行。例如:判断一个字符串的长度是否为0,以下分别是三元运算符和if语句的写法:
  1. // 三元运算符写法
  2. String strValue = "iCode504";
  3. String result = strValue.length() == 0 ? "strValue的长度为0" : "strValue的长度不为0";
复制代码
  1. // if写法
  2. String strValue = "iCode504";
  3. String result;
  4. if (strValue.length() == 0) {
  5.     result = "strValue的长度为0";
  6. } else {
  7.     result = "strValue的长度不为0";
  8. }
复制代码
2. 代码可读性:对于简单的条件判断,使用三元运算符确实可以简化代码,但是如果是复杂条件或者嵌套,那么三元运算符会让代码变得更加复杂难以理解。
3. 灵活性:if语句中可以在代码块中放入更多的表达式,但是三目运算符的表达式只能存在一个。
总体来说,三目运算符和if语句都有各自的优点和使用场景。在简单的情况下,使用三目运算符比较方便;在复杂情况下,使用if语句更合适。
三、运算符的优先级

前面学过和很多的运算符:例如算术运算符、比较运算符、逻辑运算符等等,如果这些运算符进行混合运算时,存在着一个优先级,即谁先计算,谁后计算的问题。数学中存在这样一条规定:先乘除,后加减。也就是说,乘和除是同一级别,二者的计算级别要比加和减的级别高。这条规定在Java中也完全适用。
以下是运算符的优先级顺序表(由高到低,这张表了解即可,不需要额外记忆):
运算符关联性()   []从左向右!   ~   ++   --   正负号从右向左*   /   %从左向右+   -从左向右>   >>>从左向右<      >=   instanceof从左向右==   !=从左向右&从左向右^从左向右|从左向右&&从左向右||从左向右?:从右向左=   +=   -=   *=   /=   %=   &=   |=   ^=   =   >>>=从右向左使用括号()可以提升运算符的优先级。例如:
  1. int value1 = 30;
  2. int value2 = 28;
  3. int value3 = 17;
  4. int result1 = value1 * value2 + value3;                // 先乘除,后加减
  5. int result2 = value1 * (value2 + value3);        // 有括号的优先计算
复制代码
原本加号的运算等级要比乘号的等级要低,但是给加法表达式加上括号以后,加法表达式优先计算,然后再计算乘除法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4