[Java复习](三)Java运算符

133 阅读2分钟

1. 算术运算符

image-20220318134023881.png 案例一:获取整型321各位数值位的数

 int value = 321;
 ​
 // 百位
 int hundreds = (int)(value/100);
 // 十位
 int tens = (int)(value%100/10);
 // 个位
 int units = (int)(value%10);

案例二:计算下面i的值

 int i =1;
 i = i++;
 System.out.println(i) // 1

i=i++在内存中的计算规则如下:

  1. 在内存中新开辟一个变量temp,并将i的值赋值给temp。这时i = 1;temp=1;
  2. 执行i+=1,这时i=2;temp=1;
  3. 将temp的值重新赋值给i,这时i=1;temp=2;

2. 逻辑运算符

image-20220318134154986.png

📓
&&&都可以表示,但他们是有区别的,共同点是当且仅当他们两边的条件都成立的时候最终结果才是true; 不同点是&&只要是第一个条件不成立为false,就不会再去判断第二个条件; 而&是判断所有条件后才会给出结果。 |||的区别也是如此。

3. 关系运算符

image-20220318134735510.png

  • 除以上之外还有一个特殊的运算符:对象 instanceof 类,作用是判断该对象是否是该类的实例。

4. 三元运算符

三元运算只有一个

  • expression1 ? expression2 : expression3

5. 按位运算符

image-20220318135503923.png

  • &:按位与,当两位都为1时才返回1。
 // 按位与
 int a = 1;
 int b = 1;
 int c = a&b;
 System.out.println(c); // 1
  • |:按位或,两位中只要有一位为1就返回1。
 // 按位或
 int a2 = 1;
 int b2 = 0;
 int c2 = a2|b2;
 System.out.println("a2|b2:"+c2); //a2|b2:1
  • ^:按位异或,当两位相同时返回0,不同时返回1。
 // 按位异或
 int a3 = 1;
 int b3 = 0;
 int c3 = a3^b3;
 System.out.println("a3^32:"+c3); //a3^32:1
  • ~:按位非:单目运算符,将操作数的每个位(包括符号位)全部取反。
 // 按位非
 int a4 = -2;
 int c4 = ~a4;
 System.out.println("~a4:"+c4);//~a4:1
  • >>:右移运算符
  • <<:左移运算符
  • >>>:无符号右移运算符

当移位运算不发生有效位丢失时,左移n位就相当于乘2的n次方,右移n位就相当于除2的n次方。