Java中的运算符

1、运算符的基本介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
主要有以下几种:

  1. 算术运算符
  2. 赋值运算符
  3. 关系运算符
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

2、算术运算符

算术运算符是对数值类型的变量进行运算的,主要有

运算符

作用

+

加法运算,可以用于字符串的拼接。

-

减法运算

*

乘法运算。

/

除法运算,当两个整数相除,有小数时,结果为整数。

%

取余运算 此公式能用于大部分取余 a % b = a - (a / b) * b

++

自增(前) :先运算后取值 自增 (后):先取值后运算

- -

自减(前) :先运算后取值 自减(后):先取值后运算

详解 / % ++ - -

//   除法运算
        int num1= 8;
        int num2 = 3;
        System.out.println(num1/num2);// 输出 2
        
        //   取出运算
         System.out.println(num1%num2);//输出 2  a % b = a - (a / b) * b 使用手算为 2 
        //  不使用代码计算  -8 % 3 = ?
// ++ 运算          --运算方式同++运算类似
        int num1 = 1;
        // ++在前
        ++num1;
        System.out.println(num1);//输出为2
        //  ++在后
        num1++;
        System.out.println(num1);//输出为2
        // 个人理解为 当 ++此条语句在单独使用时可 理解为 i = i + 1。
        
        //当++单独非语句时使用时
        int num1 = 1;
        int num2 = 0;
        // ++ 在前
        num2 = ++num1; // 在非单独使用时 有任意运算符时 均按照 ++在前先自增后赋值 ++在后先赋值后自增
        /*
        将上述语句拆开
        num1 = num1 + 1;
        num2 = num1;  个人理解 : 程序在执行时,先执行等号右边 再按照右边 从左往右依次执行
        */
        System.out.println(num1);//2
        System.out.println(num2);//2
        
        int num1 = 1;
        int num2 = 0;
        // ++ 在后
        num2 = num1++;
        /*
        将上述语句拆开 
        num2 = num1;
        num1 = num1 + 1;
        */
        System.out.println(num1);//2
        System.out.println(num2);//1

3、赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量。

基本赋值运算符 = int a = 10; 指将某个数据赋值给一个变量

复合赋值运算符 += , -= , *= , /= , %= 用法一致 举例 +=

复合运算符是赋值运算符的简写 如

int a = 1;
    a += 5;//等价为a = a + 5; 个人理解为 直接将 a+ 左移到等号右边 
    System.out.pringln(a); //输出6

4、关系运算符 [比较运算符]

关系运算符用于比较两个数据, 返回的结果只能是 true 或 false

System. out .print1n(3 > 2); //true
System. out.print1n(3 < 2); //false
System. out .print1n(2 == 2); //true
System. out.print1n(2 != 2); //false
System. out .print1n(3 >= 3); //true
System. out .print1n(3 <= 5); //true

5、逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean

  1. a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
  2. a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
  3. a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
  4. a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
  5. !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
  6. a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

详解&&与&: && 和 & 他们的结果相同,不过是执行过程不一致而已。可以认为是 && 对 & 进行进行了优化 使 &&更加节省时间,

& 的所有表达式都要执行 ,而 && 从左到右执行,执行到false时,返回false,不在去执行后续表达式。

关系式1 && 关系式2 && 关系式3 理解: 关系式1为false 关系式2,关系式3就不在执行。 个人理解 :为false就短路 后续不在执行,故称为短路与。

关系式1 & 关系式2 & 关系式3 理解: 关系式1为false时,关系式2还是会执行 关系式3也会执行。

详解|| 与 | : || 和 | 的执行结果也是一致 ,执行过程不一致,|| 对 | 进行了优化 使 || 节省时间

| 的所有表达式都要执行 ,而 || 从左到右执行,执行到true时,就返回true,不在去执行后续表达式。

关系式1 || 关系式2 || 关系式3 理解: 关系式1为true 关系式2,关系式3就不在执行。 个人理解 :为false就短路 后续不在执行,故称为短路或。

关系式 | 关系式2 | 关系式3 理解: 关系式1为true时,关系式2还是会执行 关系式3也会执行。

自行思考 && 与& 当表达式1 为 true 时的过程,|| 与 | 当表达式1 为 false 时的过程。

6、位运算符 [需要二进制基础]

java 中有 7 个位运算 &、| 、^ 、 ~ 、 >> 、 << 和 >>> ,此运算符在Java中不常用,了解即可

按位与& 两位全为1,结果为1,否则为0
按位或| 两位有一个为1,结果为1,否则为0
按位异或^ : 两位一个为0,- 个为1,结果为1,否则为0
按位取反~ : 0->1 ,1->0

算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
>>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0 .
特别说明: 没有<<<符号

7、三元运算符(三目运算符)

格式 :条件表达式 ? 表达式 1: 表达式 2;

  1. 如果条件表达式为 true,运算后的结果是表达式 1;
  2. 如果条件表达式为 false,运算后的结果是表达式 2
System.out.println(3>2?3:2);//3
        System.out.println(2>3?2:3);//3
        System.out.println(10<5?10:5);//返回什么? 根据上述规则判断