• java运算符


    1.概述

    计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:

    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 赋值运算符
    • 其他运算符
    • 位运算符

    2.算术运算符

    操作符描述
    +相加运算符两侧的值
    -左操作数减去右操作数
    *相乘操作符两侧的值
    /左操作数除以右操作数
    左操作数除以右操作数的余数(计算公式:a-a/b*b)(当a是一个小数时,公式:a-(int)a/b*b
    ++操作数的值增加1
    操作数的值减少1

    3.自增自减运算符

    前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算

    后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算

    示例:

    // 自增自减运算符
    int a = 10;
    int b = 20;
    int c = a++;
    int d = ++b;
    System.out.println(c);
    System.out.println(d);
    ----------------------------
    输出:
    10
    21
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    面试真题:

    1.阅读以下代码,该代码将输出什么?

    int i = 1;
    i = i++;
    System.out.println(i);
    -----------------------------
    输出:
    1
    原因:规则使用临时变量,temp = i; i = i + 1; i = temp;
    导致i的值还是1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.阅读以下代码,该代码将输出什么?

    int j = 1;
    j = ++j;
    System.out.println(j);
    -------------------------
    输出:
    2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.关系运算符

    运算符描述
    ==检查如果两个操作数的值是否相等,如果相等则条件为真
    !=检查如果两个操作数的值是否相等,如果值不相等则条件为真
    >检查左操作数的值是否大于右操作数的值,如果是那么条件为真
    <检查左操作数的值是否小于右操作数的值,如果是那么条件为真
    >=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真
    <=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真

    5.逻辑运算符

    操作符描述
    &&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真
    ll称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真
    称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false

    真值表:
    在这里插入图片描述

    有时代码中会出现非短路逻辑运算符的写法(单个&或|),他们的区别是:如果第一个操作数已经可以判断结果,那么短路逻辑运算符将跳过第二个操作数,而非短路逻辑运算符则不会跳过,效率较低😁


    6.赋值运算符

    下面是Java语言支持的赋值运算符:

    操作符描述
    =简单的赋值运算符,将右操作数的值赋给左侧操作数
    +=加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
    -=减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数
    *=乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数
    /=除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数
    (%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数
    <<=左移位赋值运算符
    >>=右移位赋值运算符
    &=按位与赋值运算符
    ^=按位异或赋值操作符
    l=按位或赋值操作符

    示例:

    // 赋值运算符
    int k = 1;
    int l = 2;
    k += l;
    System.out.println(k);
    ---------------------
    输出:
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    复合赋值运算符底层会进行一个强制的类型转换,所以以下代码是正确的:

    byte m = 1;
    m += 2;
    System.out.println(m);
    
    • 1
    • 2
    • 3

    7.条件运算符

    条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

    variable x = (expression) ? value if true : value if false
    
    • 1

    示例:

    // 三元运算符
    int n , o;
    n = 10;
    // 如果 n 等于 1 成立,则设置 o 为 20,否则为 30
    o = (n == 1) ? 20 : 30;
    System.out.println( "Value of o is : " +  o );
    -------------------------------
    输出:
    Value of o is : 30
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    底层其实是if-else语句


    附:Java运算符优先级

    当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
    在这里插入图片描述

  • 相关阅读:
    C++特性:继承,封装,多态
    动态规划--买卖股票问题详解
    《生命·觉者》蔡志忠:一个人,活出自己是最重要的
    【剑指Offer】50. 第一个只出现一次的字符
    feign整合sentinel做降级知识点
    Go的简单入门:写一个Web应用
    计算机竞赛 机器学习股票大数据量化分析与预测系统 - python 计算机竞赛
    技术人创业:失败不是成功,但反思是
    DG failover TNS description list ,ADG service name 不一样的tnsnames.ora的设置
    Java求数组中的重复数字
  • 原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/125596582