四、运算符

4.1 算数运算符(Java中,整数使用这些算数运算符,无论怎么计算,也不会得到小数)

算术运算符包括:+、-、* 、/、%、++、- -。

整型和整型的运算结果就是整型,不会出现浮点型。否则就会出现浮点型。

/**
 * @author QHJ
 * @date 2022/8/22  15:40
 * @description: 运算符
 */
public class Calculate {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        float c = 3.0f;
        double d = 3.0;
        
        System.out.println(a + b); // 13
        System.out.println(a - b); // 7
        System.out.println(a * b); // 30
        System.out.println(a / c); // 3.3333333
        System.out.println(a / b); // 3
        System.out.println(a / d); // 3.3333333333333335
        System.out.println(a % c); // 1.0
        System.out.println(a % d); // 1.0
    }
}

4.1.1 ++运算/–运算:变量自增1/自减1

  • 独立运算:独立运算时,变量前++和变量后++没有区别;
  • 混合运算(i=1)
    • 变量前++(++i):先加一再赋值。
    • 变量后++(i++):先赋值再加一。
    public static void main(String[] args) {
            int a = 5;
            //先对a进行+1操作,再把a的值作为++a的值
            int b = ++a; // a = a + 1 = 6, b = a = 6
            //先取a的值作为a++的值,在对a进行+1操作
            int c = a++; // c = a = 6, a = a + 1 = 7
            System.out.println(a+","+b);//7,6
            System.out.println(a+","+c);//7,6
    }
    

4.1.2 +符号在字符串中的操作

  • 加法:纯数字的加法操作;

  • 连接/拼接:在遇到字符串的时候,表示连接、拼接的含义。

    public static void main(String[] args) {
           int a = 5;
           int b = 6;
           String c = "Hello";
           System.out.println(a+b);//11:进行纯数字加操作
           System.out.println(a+c);//5Hello:进行字符串拼接操作
    }
    

4.2 赋值运算符

赋值运算符包括:=、+=、-=、*=、/+、%=。

赋值运算符,就是将符号右边的值,赋给左边的变量。

复合赋值运算符其中隐含了一个强制类型转换。

如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。例如:

int b = 4;
b += 3.5;
System.out.println(b);  // 7

会把 b 设置为(int)(x+3.5)。

4.3 比较运算符

比较运算符包括:==、<、>、<=、>=、!=。

比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。
在这里插入图片描述

4.4 逻辑运算符

逻辑运算符包括:&&、||、!、&、|,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值 true 或者 false。

其中,&& 和 || 运算符是按照“短路”方式来求值的:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。

但是,& 和 | 运算符不管第一个条件为 true 还是 false,依然会检查第二个,也就是说,& 和 | 性能不如 && 和 ||,但用法一样。
在这里插入图片描述

4.5 三元运算符

三元运算符用于替代 if-else,可以使用一行代码完成条件判断的要求。

4.5.1 三元运算符格式:

数据类型 变量名 = 布尔类型表达式?结果1:结果2

4.5.2 三元运算符运算方式:

  • 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量;
  • 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。

小贴士:
运算符的优先级:单目乘除为关系,逻辑三目后赋值。

单目:单目运算符+ –(负数) ++ – 等
乘除:算数单目运算符* / % + -
为:位移单目运算符<< >>
关系:关系单目运算符> < >= <= == !=
逻辑:逻辑单目运算符&& || & | ^
三目:三目单目运算符A > B ? X : Y
后:无意义,仅仅为了凑字数
赋值:赋值=

4.6 位运算符

位运算符包括:&、|、^、~、>>、<<、>>>。位运算符操作的不是整型数值(int、long、short、char、byte)本身,而是整数数值对应的二进制。

处理整型类型时,可以直接对组成整数的各个位完成操作。

在这里插入图片描述

  • & 与 |

    应用在布尔值上时,& 和 | 运算符也会得到一个布尔值,这些与 && 和 || 类似,但是 & 和 | 运算符不采用“短路”方式来求值。也就是说,得到计算结果之前两个操作数都需要计算。

  • 区别 >> 与 >>>

    像 >> 表示带符号位右移(正0负1),而 >>> 代表无符号位右移。

    >> 运算符
    4 >> 1  ->  0100 右移一位 -> 00104/2^1= 2
    -4 >> 1  ->  1100 右移一位 -> 1010 = -2
    >>> 运算符
    4 >>> 1  ->  2
    -4 >>> 1  ->  2147483646 负数的二进制与正数不太一样
    

4.7 运算符的优先级

如果不适用圆括号,就按照给出的运算符优先级次序进行计算。同一个级别的运算符按照从左到右的次序进行计算(但右结合运算符除外)。
在这里插入图片描述