• 【JavaSE重点知识归纳】第3节:运算符(算术、关系、逻辑、位、移位、优先级)


    目录

    一:什么是运算符

    二:算术运算符

    1.基本四则运算符:加减乘除模(+、-、*、/、%)

    2.增量运算符(+=、-=、*=、%=)

    3.自增/自减运算符(++、--)

    三:关系运算符

    四:逻辑运算符(重点)

    五:位运算符

    六:移位运算符

    七:条件运算符

    八:运算符的优先级


    一:什么是运算符

            对操作数进行操作的符号,不同运算符操作的含义不同。

    二:算术运算符

    1.基本四则运算符:加减乘除模(+、-、*、/、%)

    (1)都是二元运算符,使用时必须要有左右两个操作数

    (2)int/int 结果还是int类型,而且会向下取整

    (3)做除法和取模时,右操作数不能为0,会算术异常报错

    System.out.println(1/0) ;//error
    System.out.println(1%0) ;//error

    (4)%不仅可以对整型取模,也可以对double类型取模

    System.out.println(12.5%2.0) ;//2.5

    (5)当两侧操作数不一样是,会向类型大的提升

    System.out.println(1+1.1) ;//会提升为double类型
    
    2.增量运算符(+=、-=、*=、%=)

            该运算符可以帮我们进行类型转换,将操作的结果赋值给左操作数

    int a=10;
    a=(int)(a+1.1);//a+1.1为double,但是a为int类型,需要强制转换为int
    a+=1.1;//增量运算符可以自动转换为类型大的,不需要转换
    3.自增/自减运算符(++、--)

    (1)++是给变量的值+1,--是给变量-1

    (2)如果单独使用,【前置++】和【后置++】没有任何区别

    (3)如果混合使用,【前置++】先+1,然后使用变量+1之后的值;【后置++】先使用原来变量的值,表达式结束时给变量+1

    int a=1;
    a++;//a=2
    System.out.println(a++);//后置++,先使用,输出2,即a=2,然后+1
    System.out.println(a);//a=3
    

    三:关系运算符

    (1)关系运算符有6个,==,!=,<,>,<= ,>= 

    (2)在Java当中,=表示赋值,==表示相等

    (3)当需要多次判断是,不要连着写,比如:3

    四:逻辑运算符(重点)

            逻辑运算符有三个:&&,||,!,运算结构都是boolean类型

    (1)逻辑与&&:表达式1&&表达式2,左右表达式必须是boolean类型

    两个表达式都是真,结果才为真,只要一个为假,结果就是假

    (2)逻辑或||:表达式1&&表达式2,左右表达式必须是boolean类型

    左右表达式至少有一个为真,则结果为真

    (3)逻辑非!:!表达式

    真变假,假变真

    (4)短路求值

    System.out.println(1>2&&1/0==0);//打印false
    //对于&&:表达式1为假,就不会执行表达式2了
    System.out.println(1<2&&1/0==0);//打印true
    //对于||:表达式1为真,就不会执行表达式2了
    
    //&和|如果表达式结果为boolean时,也表示逻辑运算,但与&& ||相比时,他们不支持短路求值
    

    五:位运算符

            数据操作的最小单位是比特,最小的存储单位是字节

    位操作表示按二进制位运算,主要有4个:& ,|,~,^

    (1)按位与&:如果两个二进制位都是1,则结果也为1,否则为0

    (2)按位或|:两个二进制位都是0,则结果为0,否则结果为1

    (3)按位取反~:0转1,1转0

    int a=0xf;//表示16进制 ,f为十进制的15
    System.out.printf("%x\n",a);
    System.out.printf("%x\n",~a);//用16进制打印
    结果:
    f
    fffffff0
    

    (4)按位异或^:两个数字的二进制位相同为0,相异为1

    a^a=0  a^0=a

    六:移位运算符

    (1)左移<<:最左侧位不要了,最右侧补0【左移一位,相当于原数字*2】

    向左移位时,丢弃的是符号位,因此正数左移可能会变成负数

    (2)右移>>:最右侧位不要了,最左侧补符号位(正数补0,负数补1)【右移一位,相当于原数字/2】

    (3)无符号右移>>>:最右侧位不要了,最左侧补0

    (4)由于计算机计算移位效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以用移位运算符代替

    七:条件运算符

            条件运算符(也称三目运算符)只有一个:表达式1?表达式2:表达式3

    当表达式1的值为true时,整个表达式的值为表达式2的值

    当表达式1的值为false时,整个表达式的值为表达式3的值

    八:运算符的优先级

    (1)运算符之间是有优先级的,具体的规则我们不必记忆,在可能存在歧义的地方加括号即可

    (2)要注意的是:&&优先级高于||

    System.out.println(10>3||10<3&&10<3);//true
    //加括号
    System.out.println((10>3)||(10>3&&10<3));

  • 相关阅读:
    PLC如何实现二阶滤波器算法(二阶巴特沃斯低通滤波器FIR_Filter)
    【深度学习】损失函数详解
    抄写Linux源码(Day19:读取硬盘前的准备工作有哪些?)
    EditPlus汉化
    执行程序时提示cuBLAS Error: cublasGemmStridedBatchedEx failed.
    常见排序算法
    Mybatis-Plus知识点总结(上)
    一个产品经理回忆录
    Java面试题相关
    腾讯自研新一代AV1编解码器
  • 原文地址:https://blog.csdn.net/m0_74164458/article/details/132365097