学习日记(基本运算符详解)

学习日记

基本运算符

1. 理论基础

  • 算数运算符: + 、 -、 * 、 / 、 %(取余、模运算) 、 ++(自增) 、 --(自减)
  • 赋值运算符: =
  • 关系运算符: > 、 < 、 >= 、 <= 、 == 、 != 、 instanceof
  • 逻辑运算符:&&、 || 、 !
  • 位运算符: & 、 | 、 ^(异或)、 ~(非、取反) 、 >>(右移)、 <<(左移) 、 >>>
  • 条件运算符: ? :
  • 扩展赋值运算符: += 、 -= 、 *= 、 /=

注意:

  • 字符串连接符:+。

  • 整数运算中,计算式有 long 类型的,最后结果为 long 类型,否则默认为 int 型(举例在后)。

  • ++ 和 – 是一元运算符,? 和 : 是三元运算符,x ? y : z 表示 x 若为 true,则 y,否则为 z。

  • 幂运算等很多运算,会使用一些工具类来操作,如 Math 类。

  • 位运算符中的异或(^),若相同则为0,不同则为1。

  • 位运算符中的左移(<<)相当于 *2,右移(>>)相当于 /2(最后结果取整)。

  • 位运算效率极高,计算 2^10,可以用 int a = 2<<9;int b = x< 计算结果为 b = x * 2^y

  • 优先级:一般使用括号,良好的编码习惯(+ 的优先级高于 << 和 >>)。

  • 位运算符的取反(~)比较特殊,计算机内部对二进制进行运算用的都是补码,按位取反是对补码进行按位取反运算,当运算完后,再将补码变回原码

原码 反码 补码 按位取反(~) 变回原码
正数 和原码一样 和原码一样 变为负数 对补码再进行一次补码变换
负数 符号位不变,其余位取反 反码 + 1 变为正数 对补码再进行一次补码变换
原码 反码 补码 按位取反(~) 变回原码
0000 1001(9) 0000 1001 0000 1001 1111 0110 1000 1010(-10)
1000 1001(-9) 1111 0110 1111 0111 0000 1000 0000 1000(8)

注意:

① 变反码时,符号位(0正1负)不变,其余位取反;进行位运算符的取反(~)操作时,每位均取反。

② 补码变为原码,将补码再进行一次补码变换。

③ 若已知十进制数 a,求按位取反的结果 b,计算公式:b = (a+1) * (-1)


2. 实践操作

  • 算数运算符
    学习日记(基本运算符详解)_第1张图片
    学习日记(基本运算符详解)_第2张图片

  • 自增、自减、幂运算
    学习日记(基本运算符详解)_第3张图片

  • 关系运算符
    学习日记(基本运算符详解)_第4张图片

  • 逻辑运算符和短路运算
    学习日记(基本运算符详解)_第5张图片

  • 位运算符
    学习日记(基本运算符详解)_第6张图片
    学习日记(基本运算符详解)_第7张图片

  • 位运算符中的取反(~)
    学习日记(基本运算符详解)_第8张图片

  • 扩展赋值运算符
    学习日记(基本运算符详解)_第9张图片

  • 字符串连接符
    学习日记(基本运算符详解)_第10张图片

  • 条件运算符,必须掌握!
    学习日记(基本运算符详解)_第11张图片

你可能感兴趣的:(#,JavaSE,学习,java)