Java学习04-程序基础-整数运算


整数运算

int x = 12345 / 67; // 184
int y = 12345 % 67; // 17

整数的除法对于除数为0时运行时将报错,编译时不会报错。

溢出

计算结果超出了范围,就会产生溢出,溢出不会出错,却会得到奇怪结果。

简写的运算符:

  • +=
  • -=
  • *=
  • /=

自增/自减

++n
n++
--n
n--

移位运算

int n = 7
int a = n << 1; // 左移1位相当于*2
int b = n << 1; // 右移1位相当于/2

byte和short要先转为int再进行位移

左移:不分正负数,带符号位移,高位移出,低位补0。
右移:该数为正,则高位补0,若为负数,则高位补1。
无符号右移:也叫逻辑右移,即不论正负数,高位补0。

位运算

n = 0 & 1; // 与,同时为1才为1
n = 0 | 1; // 或,任意1个为1就为1
n = ~0; // 非,取反
n = 1 ^ 0; // 异或,不同为1,相同为0

对两个整数进行位运算,就是依次对每一位进行运算 。

运算优先级

  • ()
  • ! ~ ++ --
  • * / %
  • + -
  • << >> >>>
  • &
  • |
  • += -= *= /=

类型自动提升与强制类型转换

低向高自动转换
高向低强制转换:(类型)。超出范围的强制转换会得到错误的结果。

posted @ 2020-08-08 13:11  凤鸣朝阳水龙吟  阅读(146)  评论(0)    收藏  举报