• Java基础——运算符表达式


    算术运算符

    运算符说明
    +
    -
    *
    /
    %取模(取余)
    ++自增
    - -自减

    参考代码:

    //加法运算
    int add1 = 2 + 3;
    System.out.println("加法运算 add1 = " + add1);
    String add2 = 2 + "3";
    System.out.println("加法运算 add2 = " + add2);
    
    //减法运算
    int minus = 10 - 5;
    System.out.println("减法运算 minus = " + minus);
    
    //乘法运算
    int multiply = 6 * 6;
    System.out.println("乘法运算 multiply = " + multiply);
    
    //除法运算
    int divide1 = 4 / 3;
    System.out.println("除法运算(整数)divide1 = " + divide1);
    
    //除法运算(小数)
    double divide2 = 1.2 / 6;
    System.out.println("除法运算(小数)divide2 = " + divide2);
    
    //取模运算
    int surplus1 = 9 % 5;
    System.out.println("取模运算(都是整数) surplus1 = " + surplus1);
    int surplus2 = -9 % 5;
    System.out.println("取模运算(被取模数为负数) surplus2 = " + surplus2);
    int surplus3 = 9 % -5;
    System.out.println("取模运算(取模数为负数) surplus3 = " + surplus3);
    
    //自增运算
    int val1 = 5;
    int autoAdd1 = (val1++) + 1;
    System.out.println("自增运算(++在数值后)autoAdd1 = " + autoAdd1);
    int val2 = 9;
    int autoAdd2 = (++val2) + 1;
    System.out.println("自增运算(++在数值前)autoAdd2 = " + autoAdd2);
    
    //自减运算
    int val3 = 5;
    int autoMinus1 = (val3--) - 1;
    System.out.println("自减运算(--在数值后)autoMinus1 = " + autoMinus1);
    int val4 = 9;
    int autoMinus2 = (--val4) - 1;
    System.out.println("自减运算(--在数值前)autoMinus2 = " + autoMinus2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    运行结果:

    加法运算结果 add1 = 5
    加法运算结果 add2 = 23
    减法运算结果 minus = 5
    乘法运算结果 multiply = 36
    除法运算结果(整数)divide1 = 1
    除法运算结果(小数)divide2 = 0.19999999999999998
    取模运算结果(都是整数) surplus1 = 4
    取模运算结果(被取模数为负数) surplus2 = -4
    取模运算结果(取模数为负数) surplus3 = 4
    自增运算结果(++在数值后)autoAdd1 = 6
    自增运算结果(++在数值前)autoAdd2 = 11
    自减运算结果(--在数值后)autoMinus1 = 4
    自减运算结果(--在数值前)autoMinus2 = 7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意:

    1. 除法运算中,若运算数值都是整数,运算结果只会保留小数点前的整数部分舍弃小数点后的小数部分。
    2. 取模运算中,结果不一定都是整数,若被取模数为负数,负号不可忽略,若取模数为负数,负号可忽略。
    3. 自增和自减运算中,若自增自减运算符在变量前面,则先自增自减再参与运算,若自增自减运算符在变量后面,则先参与运算再自增自减。
    4. 加法运算中,若相加的两个值中有任意一个非数值(字符串),则数值会转换为字符串,然后进行拼接。

    赋值运算符

    运算符说明
    =等于
    +=加等于(a += b 相当于 a = a + b)
    -=减等于(a -= b 相当于 a = a - b)
    *=乘等于(a *= b 相当于 a = a * b)
    /=除等于(a /= b 相当于 a = a / b)
    %=模等于(a %= b 相当于 a = a % b)

    参考代码:

    int val1 = 5;
    System.out.println("等于 val1 = "+ val1);
    
    val1 += 5;
    System.out.println("加等于 val1 = "+ val1);
    
    val1 -= 1;
    System.out.println("减等于 val1 = "+ val1);
    
    val1 *= 2;
    System.out.println("乘等于 val1 = "+ val1);
    
    val1 /= 4;
    System.out.println("除等于 val1 = "+ val1);
    
    val1 %= 3;
    System.out.println("模等于 val1 = "+ val1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    运行结果:

    等于 val1 = 5
    加等于 val1 = 10
    减等于 val1 = 9
    乘等于 val1 = 18
    除等于 val1 = 4
    模等于 val1 = 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    a=a+3与a+=3的区别?

    byte a = 2;
    a = a+3; //错误
    a+=3; //正确
    
    • 1
    • 2
    • 3

    a=a+3,会自动转换为int类型,a+=3是会强制转换,如:a=(byte)(a+3);

    关系运算符

    运算符说明
    ==相等
    !=不等
    >大于
    <小于
    >=大于等于
    <=小于等于
    instanceof检查是否是类的对象

    注意:关系运算符返回的是布尔值(boolean)。

    参考代码:

    boolean val1 = 3 == 4;
    System.out.println("3是否等于4:"+val1);
    
    boolean val2 = 3 > 4;
    System.out.println("3是否大于4:"+val2);
    
    boolean val3 = 3 < 4;
    System.out.println("3是否小于4:"+val3);
    
    boolean val4 = 9 >= 9;
    System.out.println("9是否大于等于9:"+val4);
    
    boolean val5 = 8 <= 9;
    System.out.println("8是否小于等于9:"+val5);
    
    boolean val6 = "str" instanceof Object;
    System.out.println("str是否是Object类对象:"+val6);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    运行结果:

    3是否等于4false
    3是否大于4false
    3是否小于4true
    9是否大于等于9true
    8是否小于等于9true
    str是否是Object类对象:true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:instanceof基本类型不能使用,只能引用类型进行比较,比较的是class类对象。

    逻辑运算符

    运算符说明
    &逻辑与
    |逻辑或
    &&短路与
    ||短路或
    !逻辑非
    ^逻辑异或

    注意:逻辑运算是布尔值(boolean)之间进行运算,返回值也是布尔值。

    参考代码:

    boolean val1 = true & false;
    System.out.println("逻辑与 val1:"+val1);
    
    boolean val2 = true | false;
    System.out.println("逻辑或 val2:"+val2);
    
    boolean val3 = true && false;
    System.out.println("短路与 val3:"+val3);
    
    boolean val4 = true || false;
    System.out.println("短路或 val4:"+val4);
    
    boolean val5 = !true;
    System.out.println("逻辑非 val5:"+val5);
    
    boolean val6 = true ^ false;
    System.out.println("逻辑异或 val6:"+val6);
    
    boolean val7 = false ^ false;
    System.out.println("逻辑异或 val7:"+val7);
    
    boolean val8 = true ^ true;
    System.out.println("逻辑异或 val8:"+val8);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    运行结果:

    逻辑与 val1:false
    逻辑或 val2:true
    短路与 val3:false
    短路或 val4:true
    逻辑非 val5:false
    逻辑异或 val6:true
    逻辑异或 val7:false
    逻辑异或 val8:false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    注意:异或两个布尔值都相同时,为false,反之为true。

    & 和 &&的区别:

    • & :左边无论真假,右边都会进行运算。
    • && :若左边不为真,则右边不参与运算,反之参与运算。

    | 和 ||的区别:

    • | :左边无论真假,右边都会进行运算。
    • || :若左边为真,则右边不参与运算,反之右边参与运算。

    异或(^)与或(|)的不同之处是,异或当左右都为true时,结果为false。

    位运算符

    运算符说明
    <<左位移
    >>右位移
    >>>无符号右移
    &按位与
    |按位或
    ^按位异或
    ~取反

    扩展:

    • 对于左位移,相当于是乘于2的几次方
      例如:11<<2,相当于11*2^2 = 11 * 4 = 44;
    • 对于右位移,相当于是除于2的几次方
      例如:8>>1,相当于8/2^1 = 8 / 2 = 4;

    在计算机中,位运算都是以补码的形式参与运算,详情请访问了解进制和位运算

    三元运算符

    语法:

    (布尔表达式)?表达式1:表达式2
    
    • 1

    布尔表达式为true时,运算结果是表达式1,否则是表达式2。

    参考代码:

    //3大于4返回3,否则返回4
    int val = 3 > 4? 3:4;
    System.out.println("三元运算结果:"+val);
    
    • 1
    • 2
    • 3

    运算结果:

    三元运算结果:4
    
    • 1

    运算符的优先级

    在这里插入图片描述


    参考文章:

    1. https://blog.csdn.net/qq_46476515/article/details/127335259
  • 相关阅读:
    LeetCode 周赛 346(2023/05/21)仅 68 人 AK 的最短路问题
    Pthread 并发编程(二)——自底向上深入理解线程
    【AHK】解决WPS2019窗口大小bug\WPS窗口变小立即调整
    魔改了一下bootstrap-treeview组件,发布个NPM包体验一下
    【DKN: Deep Knowledge-Aware Network for News Recommendation】
    谷粒商城----缓存与分布式锁
    什么是交换分区以及如何创建交换分区
    看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-7
    PDF控件Spire.PDF for .NET【转换】演示:将 PDF 转换为 word、HTML、SVG、XPS
    PUPU TECH 第12期技术沙龙 ✘深圳站
  • 原文地址:https://blog.csdn.net/qq_45674493/article/details/133296853