(三)运算符

1. 算数运算符

+-*/%i++++ii----i

取余运算符%被模数的符号与取余运算结果同号

自增运算符不改变数据的类型
byte b1 = 127;
b1++;
System.out.println(b1); // -128

2. 赋值运算符

=可以连续赋值

short s1, s2;
s1 = s2 = 10;
//
int i1 = 10, i2 = 10;

+=-=*=/=

​ 以上赋值运算符都不会改变变量的数据类型

3. 比较运算符

==, !=, >=, <= , >, <

4. 逻辑运算符

&, &&, |, ||, !, ^

① 操作的都是 boolean 类型的变量;

② & 与 &&

​ 相同点1:&与&&的运算结果都相同

​ 相同点2:当符号左边是 true,都会执行右边的运算;

​ 不同点:但符号左边为 false,&&的右边不会执行。

③ | 与||

​ 与 &和&& 的情况类似,当 || 的左边是 true,右边不会执行。

5. 位运算符

<<>>, >>>, &, |, ^, ~

① 位运算操作数都是整型数据

<< 左移,在一定范围内,每向左移1位,相当于 *2

>> 右移,在一定范围内,每向右移1位,相当于 /2

​ 被移位数的二机制最高位为 0,则空缺位补 0;为1.则补0.

>>> 无论最高位是 0 还是 1,空缺位置都补0.

面试题1

最高效的计算 2 * 8

2 << 3

面试题2

交换a,b的值

// 方法一
int temp = num1;
num1 = num2;
num2 = temp;
// 方法二
num1 += num2;
num2 = num1 - num2;
num1 = num1 - num2;
// 方法三
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num2 = num1 ^ num2;

6. 三元运算符

(条件表达式) ? 表达式1 : 表达式2

① 条件表达式的结果是布尔类型

② 表达式1、2的类型一致

③ 三目运算可以嵌套(不推荐)

④ 三元运算式可以用 if-else 互换

7. 幂运算

Java 使用 Math.pow(a,b) 计算 ab

  1. 科学计数法

科学计数法 a x 10b => aEb

  1. 下划线表示法

为了提高可读性,Java允许在整数之间加下划线 _ 61_091_19_0303567_4657_6746_3436

但是这种放在两边的形式确是错误的👇

_65, 65_