java中的运算符(java基础)

运算符:用来指明对于操作数的运算方式

  • 按照操作数的数目来进行分类
    单目 a++ (a>b) ? x : y
    双目a+b
    三目(a>b) ? x : y

  • 按照运算符的功能来进行分类
    1.算术运算
    加(+) 减(-)乘(*) 除(/) 取余或取模(%)自增(++) 自减(–)
    int x = 1;
    x = x + 1; //x空间内的值自己增加了一个
    x ++; //x空间的值自增了一个
    ++ x; //对于x空间内的值来讲都是一致的,最终的结果都自增了一个
    int x = 1
    int y = x ++; //++在后,先赋值,后自增(在计算机底层先进行计算,后赋值)
    x ++;// x =x + 1; //将x变量空间的内容先取出,常量区取出1,进行计算,再次存回x空间
    x想要做值交换的时候,会产生一个临时的副本空间(备份)
    ++在变量的前面,先自增后备份 ++在变量的后面,先备份后自增
    会将副本空间内的值赋给别人
    x == ? 2 y == ? 1
    int a = 1;
    a = a ++;
    a == ? 2
    int m = 1;
    int n = 2;
    int sum = m++ + ++n - n-- - --m + n-- - --m;
    m == 0 ,n == 1 , sum == ?,2
    2.赋值运算
    赋值运算存入等号左边的变量空间内
    = 赋值符号 将=右边的内容
    += -= *= /= %=
    int x = 1;
    x ++;//x自增了一个,需求让x增加10个,for循环结构
    byte x = 1; //1常量32bit,‘=’自动转化
    x += 2; // x+2中,+自动类型提升,3 ‘=’自动转化
    -------------------------------------------------------------------------------
    byte x = 1;
    x = x + 2; //出现编译错误,类型从int转化成byte可能有损失(可以理解为“+”具有自动类型提升的功能)
    x变量空间的值取出,从常量区取过来2,加法运算,结果重新存回x变量空间内
    x空间---->1 8bit
    常量区—>2 32bit
    00000001 + 00000000 00000000 00000000 00000010
    '+’自动类型提升 8bit---->32bit
    00000000 00000000 00000000 00000001
    00000000 00000000 00000000 00000010
    --------------------------------------------------------------
    00000000 00000000 00000000 000000113
    3.关系运算(比较)
    (>) ( >=) (< ) ( <=) ( !=) (
    ==) (对象 instanceof 类–>判断对象是否属于某个类)
    4、逻辑运算
    & 逻辑与 | 逻辑或 ^ 逻辑异或 !逻辑非
    &&短路与 ||短路或
    逻辑运算符前后连接的应该是两个boolean结果
    &(逻辑与) 可以理解为中文的“和”,“并且”,意思,&前后两个条件必须同时满足,最终才为true
    | (逻辑或) 可以理解为中文的“或者”,| 前后两个条件只要有一个满足,最终就为true
    ^(逻辑异或) 前后两个表达式只要结果不相同,最终的结果就为true
    !(逻辑非) 可以理解为中文的“不”,将原来的结果取反
    &&(短路与)
    (3>4) && (3>2) = ?
    false && true=false
    1、短路 什么情况下才会发生短路? 当前的值结果为false的时候会发生短路
    2、短路 到底短路的是什么?短路的是&&之后所有的计算的过程
    3、如果发生了短路情况,性能比&稍微好一点
    4、&逻辑与和&&短路与,从执行的最终结果来看没有什么区别
    5、短路与不一定提高了性能,只有当前面为false的时候才会发生短路,才能提高性能
    || 短路或
    (3>1) || (3>4) = ?
    true ||()= true
    或两个条件有一个满足,如果当第一个条件为true,最终结果肯定为true
    5.位(bit)运算
    & (按位与 ) |(按位或) ^(按位异或) ~(按位取反)
    <<(按位左位移) >> (按位右位移 ) >>>(按位右位移(无符号))
    如:
    3 & 5 = ?—>1
    1、将3和5转化成二进制表示形式
    2、竖着按照对应位置进行& | ^ 计算
    3、将计算后的二进制结果转化为十进制

    00000011
    00000101
    ---------------
    00000001------>1

    ~6(非6) = -7
    知识补充
    原码 反码 补码 二进制表示数字
    原码:
    00000000 00000000 00000000 00000110(对应十进制6)
    10000000 00000000 00000000 00000110(对应十进制-6)
    上面原码对应的反码:
    00000000 00000000 00000000 00000110
    11111111 11111111 11111111 11111001 符号位不动,其余取反
    上面原码对应的补码:
    00000000 00000000 00000000 00000110
    11111111 11111111 11111111 11111010 反码+1
    计算机中不管是正数还是负数,存储的形式都是以补码的形式来存储
    注意:反码是一种形式,取反是一个计算过程(每一个位置都取反)
    6 << 1 = 12
    00000000 00000000 00000000 00000110
    0000000 00000000 00000000 000001100---->12
    相当于乘以2的位移的次幂
    6 >> 1 = 3
    00000000 00000000 00000000 00000110
    000000000 00000000 00000000 0000011----->3
    相当于除以2的位移的次幂
    -6 >> 1
    11111111 11111111 11111111 11111010
    ?11111111 11111111 11111111 1111101
    如果保留符号位置1,填1
    如果不保留符号,不管是什么 都填0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值