avatar

JavaSe备忘录03-关于操作符,运算符和位运算符

运算符

Java 运算符,是一种特殊的符号。用表示数据的运算,赋值和比较。

  • 算数运算符
  • 赋值运算符
  • 比较运算符
  • 位运算符
  • 逻辑运算符
  • 三目运算符

1. 算数运算符

1
2
3
4
5
6
7
符号:加(+),减(-),乘(*),除(/),取余(%)
自增:++
自减:--

作用在于:整数和浮点型。
最终的结果:十进制。只要是byte,short,int,long,char,float,double相加结构都是十进制。
所有的运算的结果的最小范围一定是:---int

a. 自增:++

  • 不同行:```java
    int a =1;
    a++;
    ++a;
    System.out.println(a); //3 a++ 与 ++a 在不同行效果是等价的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

- 相同行:_在运算中,或者逻辑判断中,或者方法的传参中就存在差异了_```java
int a =5;
int b = a++ + 6;
System.out.println(b); // 11
System.out.println(a); // 6

int a1 =5;
int b1 = ++a1 + 6;
System.out.println(b1); // 12
System.out.println(a1); // 6

分析[int b = a++ + 6;]运算步骤: 先运算再递加。
step1: a + 6 = 11
step2: a++ = 6
因此结果是 b=11,a=6

分析[int b = ++a + 6;]运算步骤: 先递加再运算。
step1: ++a1 = 6
step2: a1+ 6 = 12
因此结果是 b1=12,a1=6

b. 自减:–
跟自增++同理

2. 赋值运算符

  • 等号 =,只要赋值了就修改内存控制的二进制
  • 基础数据类型的默认值:
  • byte short int long 都是 0
  • float double == 0.0
  • boolean == false
  • char==\u0000 空格
  • 赋值运算符的扩展:
  • +=,-=,*=,/=,%=

3. 比较运算符

1
< > == >= <= != 用于条件判断中

a. == 逻辑判断,是内存地址的比较-(二进制),还需考虑前面的数据类型。
b. = 赋值
** “==” 数字是值的比较,对象(封装数据类型)是内存地址的比较。**
** 如果是基础数据类型值比较==,值相等那么都是 true,如果是封装数据类型都是 false—hashCode()**

4. 逻辑运算符

  • 短路:或 || 且 && 非 !
  • 不短路:或 | 且 & 非 ^ (从性能上讲,不推荐使用。)

5. 三目运算符

格式:(逻辑判断(boolean))?true:fakse;

6. 位运算符(7 个) —计算

1
2
3
4
5
6
7
8
9
10
11
12
>>  右移运算符
>>> 无符号右移
<< 左移,二进制整体往左边移动两位,空白位用0填充。
& 按位与,如果两个同时为1返回就是1,其他的都是0。
| 按位或,如果有一位是1那么就是1,其他的都是0。
^ 按位异或,两个相同的时候0,不同时返回1。
~ 按位非,单数字取反
作用:快速计算一个数字想要得到结果,最终都是以二进制的方式进行计算。
思路: 把十进制转成二进制,再进行移位操作。

true & false ---逻辑符合
5 & 9 ---位运算
文章作者: luochenxi
文章链接: https://luochenxi.github.io/2019/03/03/yuque/JavaSe%E5%A4%87%E5%BF%98%E5%BD%9503-%E5%85%B3%E4%BA%8E%E6%93%8D%E4%BD%9C%E7%AC%A6,%E8%BF%90%E7%AE%97%E7%AC%A6%E5%92%8C%E4%BD%8D%E8%BF%90%E7%AE%97%E7%AC%A6/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kirio

评论