第二章、运算符

这一章比较简单不多啰嗦。

1、算数运算符

image-20211022105731611

说明

除号/,如果10/3结果是整型不是浮点型。

对一个数据取模,比如a % b,等同于a - a / b * b

或者可以这么认为,取模的符号和左边的数相互一致:

7 % 3 = 1;-7 % 3 = -1;7 % -3 = 1

经典习题

i = 10;
i = i++;
System.out.println(i);
复制代码

2、关系运算符

image-20211024181143573

关系运算符的结果都是boolean类型,要么是true,要么是false。

3、逻辑运算符

image-20211024181520138

逻辑与&,逻辑或|,逻辑异或^

短路与&&,短路或 ||,取反

短路&&,只要第一个为false那后面不判断,短路或||,只要后面有一个为true后面不判断。

public static void main(String[] args) {
    int x = 5;
    int y = 5;
    if (x++== 6 & ++y== 6){

    }
    System.out.println("x = " + x + " y = " + y);
}
//x = 6;y = 6

public static void main(String[] args) {
    int x = 5;
    int y = 5;
    if (x++== 6 && ++y== 6){

    }
    System.out.println("x = " + x + " y = " + y);
}
//x = 6;y = 5
复制代码

4、赋值运算符

下面这些都是赋值运算符:

int a = 10;
a += 1;
a -= 1;
复制代码

赋值运算符会进行类型转换:

byte a = 2;
a += 1;

//上面这个等价于 a = (byte)(a+1);
复制代码

5、三元运算符

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

为true执行表达式1,false执行表达式2。

public static void main(String[] args) {
    int a = 10;
    int b = 99;
    int result = a > b ? a++ : b++;
    System.out.println("result=" + result);
    System.out.println("a=" + a);
    System.out.println("b=" + b);
}
复制代码

题目:计算三个数中最大的那个

public static void main(String[] args) {
    int num1 = 270;
    int num2 = 25;
    int num3 = 104;
    int bigNum1 = num1 > num2 ? num1 :num2;
    int max = bigNum1 > num3 ? bigNum1 : num3;
    System.out.println("最大的数是:" + max);
    
    
    //或者
    int max = (num1 > num2 ? num1 : num2) > num3 ? (num1 > num2 ? num1 : num2) : num3;
    System.out.println("最大的数是:" + max);
}
复制代码

6、位运算符

image-20211024182119514

算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位

算术左移 <<: 符号位不变,低位补 0

逻辑右移 >>>:也叫无符号右移,运算规则是: 低位溢出,高位补 0

7、运算符的优先级

在这里插入图片描述

其中最需要注意的就是:逻辑与、逻辑或、逻辑非的优先级

逻辑非 > 逻辑与 > 逻辑或

//好好看这个例子
boolean s1 = true,s2 = true,s3 = false;
System.out.println(s1 || s2 && s3);//true
复制代码

8、进制换算

常用的进制的符号:

  1. 十进制就是直接写即可
  2. 八进制要求以0开头,比如:015
  3. 十六进制:0x开头,比如:0x15
  4. 二进制:要求0b或0B开头,比如0b11011

其他细节:

  • 其他进制转换成十进制,按照每一位进行计算,最后一位是进制的0次方,依次往前算
  • 十进制转换成其他进制,拿这个数除以换算的进制,取余数并且反向输出即可
  • 二进制转八进制,每3位一组去计算即可
  • 二进制转十六进制,每4位一组去计算
  • 八进制转二进制:八进制每一位都换成二进制的三位
  • 十六进制转二进制:同上,变成一位变四位

image-20211024222228022

猜你喜欢

转载自juejin.im/post/7128039211176820772