zoukankan      html  css  js  c++  java
  • java中各种运算符

    比如java中常用的运算符

    符号++ ,+,--,-

    有时这个符号拼凑起来也有点复杂

    比如这样一个运算式

    int i=3;

    i+++i-i++-++i

    + -运算符的优先级 低于++-- 先运算++--

    可以将上面的式子拆开

    i++ + i - i++ - ++i

    这样是不是容易多了

     

    先来个简单点的

    1 K++

    int k=0;

    System.out.println(K++)

    System.out.println(k)

    输出结果为 0

               1

    这说明 K++式子并没有相加 而是k本身加了1

     

    2 ++K

    int k=0;

    System.out.println(++k)

    System.out.println(k)

    输出结果为 1

               1

    这说明 K++式子本身加了1 而是k本身也加了1

     

    K----K效果与上一样

     

    再来算上面的式子

    i=3

    i++ + i - i++ - ++i

     1………….2………3…………..4

     

    1 i++本身不变 i++=3  i=4

    2 i=4

    3 i++本身不变 上面i=4 此时i++=4 i=5

    4 ++i本身变化 上面i=5 此时 ++i=6 i=6

     

    取出上面红色的值

    结果为 : 3+4-4-6=-3

     

     

    符号 ~

     

    比如 int i=102;

    ~i=-103

         int i=-3

    ~i=2

     

    ~计算可以匹配一个运算式

     int I;

    ~I=(-I)-1;

    也就是求相反值-1

     

    符号>> <<

    举例

    int i=100;

    int j=2;

    i>>j=25

    i<<j=400

     

    <<匹配运算式

    i>>j   等价于   i/(int)Math.pow(2, j)

    i<<j  等价于    i*(int)Math.pow(2, j)

    也就是 i除以或乘以 2j次方

     

    符号(抑或) |

    符号 | 就比较复杂一点 里面涉及到二进制与十进制之间的转换问题

    比如 32 | 24

    32 转换为二进制

    Integer.toBinaryString(32) = 100000;

    24转换为 二进制

    Integer.toBinaryString(24) = 11000;

     

    两个并排比较 比较式为数不同 0

    100000

    011000

    位与位比较 00=0  01=1 11=1

    上面的结果就是

    111000

    然后将 111000转换为十进制

    1*(int)Math.pow(2, 5)+1*(int)Math.pow(2, 4) +1*(int)Math.pow(2, 3)

    =2*2*2*2*2+2*2*2*2+2*2*2

    =32+16+8

    =56

     

     

    符号&

    同样32 | 24

    32 转换为二进制

    Integer.toBinaryString(32) = 100000;

    24转换为 二进制

    Integer.toBinaryString(24) = 11000;

     

    两个并排比较 比较式为数不同 0

    100000

    011000

    位与位比较  00=0  01=0 11=1

    上面的结果就是

    000000

    然后将 111000转换为十进制

    0*(int)Math.pow(2, 5)+0*(int)Math.pow(2, 4) +0*(int)Math.pow(2, 3)

    =0

     

    符号(抑或) ^

    假如 2^5

    2 转换为二进制

    Integer.toBinaryString(2) = 10;

    5转换为 二进制

    Integer.toBinaryString(5) = 0101;

    两个并排比较 比较式为数不同 0

    101

    010

    位与位比较  00=0  01=1 11=0  所谓抑或就是 相同为0 不同为1

    上面的结果就是111

    转换2进制位 4+2+1=7

     

    其他一些符号就不说了 * / %取余

     

     

    符号 >>> <<<

    假如 27>>>1

     

    获取 27的 2进制 :11011

    27往右推进一位 11011 所有位数往右移动   01101

     01101的十进制 就是 :13

     

    假如  27>>>2

    11011 右移两位 00110 结果就是6

     

    <<<是不存在的 不用试了  

     

     

  • 相关阅读:
    redis 数据迁移
    redis
    Redis集群的三种模式
    Golang 协程 (goroutine) 与通道 (channel)
    Python生成器next方法和send方法区别
    python 文件
    Tornado 异步以及非阻塞的I/O
    python 多进程和多线程3 —— asyncio
    利用CSS改变图片颜色的100种方法!
    jquery获取div的位置
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9332105.html
Copyright © 2011-2022 走看看