• 运算符【详细】


    前言

    ※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入学习模式。若有错误,请多多指教。

    👍 点赞  收藏 📝留言 都是我创作的最大的动力!

    目录

    ⭐思维导图⭐

    1.算术运算符

    1.1基本运算符(+,- ,*,/ ,%)

    1.2增量运算符 (+=,-=,*=,/=,%=)

    1.3自增自减运算符(++、--)

    2.关系运算符

    2.1六个关系运算符(<、>、==、!=、<=、>=)

    3.逻辑运算符(重点)

    3.1与或非

    3.2短路与

    3.3短路或 

     4.位运算符

    4.1按位与(&)

    4.2按位或 (|)

    4.3 按位取反(~)

    4.4按位异或(^)

    5.移位运算

    6. 条件运算符(三目运算符)

    7.运算符的优先级


    思维导图

     

    正文

    1.算术运算符

    1.1基本运算符(+-*/ ,%

    加,减,乘不用多讲,但需注意类型提升,对此有疑惑的小伙伴请移步---》数据类型

    +、-、*、/、%都为二元运算符,

    二元运算符:二元运算符指的是需要两个操作数才能完成运算的运算符。

    /除:注意被除数不能为零,不然编译会报错。

    %求余:右操作数不能为零。

    %:     其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数” 符号和左边操作数相同

    下面小题两道,如果你回答正确,那这基本四则运算符,你也就毫无问题了。 

    1. //下列输出结果是多少?
    2. System.out.println(7/4);
    3. System.out.println((float)(7/4));
    4. System.out.println((float)7/4);
    5. System.out.println(7/(float)4);
    6. 结果:11.01.751.75

    7/4因为都是整数,所以结果就是1;

    (float)(7/4) 根于括号,先算7/4,然后对1强转为1.0;

    (float)7/4) 或 7/(float)4,是先将7或4强转为小数。结果就是1.75;

    1. //下列输出结果是?
    2. System.out.println(10%3);
    3. System.out.println(10%-3);
    4. System.out.println(-10%3);
    5. System.out.println(-10%-3);
    6. 结果:11、-1、-1

    10/3=3……1

    10/-3=-3……1

    -10/3=-3……-1

    -10/-3=3……-1

    1.2增量运算符 (+=,-=,*=,/=,%=)

    1. a += 10;//--> a = a + 10;
    2. b *= 10;//--> b = b * 10;
    3. //其余以此类推;

    增量运算符会自动进行类型转换

     例如

     1.3自增自减运算符(++、--)

    (1)++,--   为一元运算符(只需要一个操作数就能完成运算的运算符

    (2)++是变量+1,--是变量-1;

    (3)前置++,是先加后用;后置++,是先用后减

    1. int a1 = 3;
    2. int b = a1++;
    3. int a2 = 3;
    4. int c = ++a2;
    5. System.out.println("b = "+b+",c = " + c);
    6. System.out.println("a1 = "+a1+",a2 = " + a2);
    7. 输出结果:
    8. b = 3,c = 4
    9. a1 = 4,a2 = 4

    2.关系运算符

    2.1六个关系运算符(<、>、==、!=、<=、>=

    (1)关系运算符是用来比较的,其结果为true/false

    (2)当需要多次判断时,不能连着写,比如:1 < a < 5,应为:1 < a && a < 5

    关系运算符
    运算符含义示例
    <小于a < b
    >大于a > b
    ==等于a == b
    !=不等于a != b
    <=小于或等于a <= b
    >=大于或等于a >= b

    3.逻辑运算符(重点)

    3.1与或非

    逻辑运算符
    运算符名称说明示例
    &&逻辑与左右表达式全为真,则结果为真布尔表达式a && 布尔表达式b
    | |逻辑或
    左右表达式至少有一个为真,则结果为真
    布尔表达式a | | 布尔表达式b
    !逻辑非
    真变假,假变真。
    !布尔表达式a

    (1)逻辑运算符 的运算结果为Boolean类型(TRUE/FALSE)

    3.2短路与

    短路与:对于&&,如果左侧表达式为FALSE,表达式结果一定为FALSE,而右侧表达式不执行。

     例如:

    1. int a = 2;
    2. int b = 4;
    3. boolean c = (a > 5) && (b++ > 3);
    4. System.out.println("b = " + b);
    5. //运行结果:b = 4

    所以 (b++ > 3) 这块代码并没有执行。否则b应该变成5;

    3.3短路或 

    短路或:对于 | | ,如果左侧表达式为TRUE,表达式结果为TURE,右侧表达式也不执行

    例如:

    1. int a = 2;
    2. int b = 4;
    3. boolean c = (a < 5) || (b++ > 3);
    4. System.out.println("b = " + b);
    5. //运行结果:b = 4

     4.位运算符

    四个位运算符( & 、|、 ~、^)

    位运算符
    运算符名称说明
    &按位与
    如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
    |按位或
    如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
    ~按位取反
    如果该位为 0 则转为 1, 如果该位为 1 则转为 0
    ^按位异或
    如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

    4.1按位与(&)

    例:

    1. System.out.println(3&5);
    2. //运行结果:1

    因为3和5的二进制前28为都是0,所以只表示后4位。

    如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

    3:0011;5:0101

    3&5-->  0011&0101  -->0001 -->1;  

    因为只有绿色的1在3和5中都是1,按位与后任然为1,其他全为0;所以结果为1;

    4.2按位或 (|)

    1. System.out.println(3|5);
    2. //运行结果:7

    如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

    3|5-->  0011|0101  -->0111 -->7;  


    4.3 按位取反(~)

    1. System.out.println(~(byte)3);
    2. //运行结果-4

    如果该位为 0 则转为 1, 如果该位为 1 则转为 0

    3:0000 0011;

    ~3:1111 1100 最左面的1表示负数,故这是补码

    1111 1100 取反,1000 0011 --》 +1得到原码   1000 0100

    原码:1000 0100  —>-4

    4.4按位异或(^)

    1. System.out.println(3^5);
    2. //运行结果: 6

    如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

    3:0011; 5:0101;

    3^5 --> 0011^0101 -->0110-->6

     5.移位运算

    运算符名称说明
    <<左移
    最左侧位不要了 , 最右侧补 0
    >>右移最右侧位不要了,最左侧补符号位(正数补0,负数补1)
    >>>无符号右移
    最右侧位不要了 , 最左侧补 0.

     

    (1)正整数左移 1 , 相当于原数字 * 2. 左移 N , 相当于原数字 * 2 N次方.
    (2)正整数右移 1 , 相当于原数字 / 2. 右移 N , 相当于原数字 / 2 N次方.
    (3)  由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 N 次方的时候可以用移位运算代替 .
    (4) 移动负数位或者移位位数过大都没有意义 .

    (5)位移运算会将Byte,Short类型的数据提升为int类型,而int,long类型会保持不变

    (6)位移运算不能对浮点类型运用。

    6. 条件运算符(三目运算符)

    表达式1 ? 表达式2 : 表达式3

    表达式1 的值为 true , 整个表达式的值为 表达式2 的值;
    表达式1 的值为 false , 整个表达式的值为 表达式3 的值.

    求a、b中的较大值 

    int c = a > b ? a : b;

    7.运算符的优先级

     以上运算符优先顺序不用死记硬背,不知谁的优先级高的话,加括号就行。

  • 相关阅读:
    C Primer Plus(6) 中文版 第12章 存储类别、链接和内存管理 12.3 掷骰子
    [PAT练级笔记] 11 Basic Level 1013
    Python封装机制及实现方法
    pdd.order.basic.list.get订单基础信息列表查询接口(拼多多店铺订单列表查询接口)代码对接教程
    Rust -- 模式与匹配
    ESPHome不经过HA设备1直接控制设备2
    SpringBoot整合百度云人脸识别功能
    Web基础和HTTP协议
    pycharm debug调试点击结束断点报错KeyboardInterrupt
    Pytorch技法:继承Subset类完成自定义数据集拆分
  • 原文地址:https://blog.csdn.net/weixin_62263267/article/details/126760943