算术运算符
。。。。。
自增自减运算符
符号 | z |
自增:++ | 放在某个变量前面或者后面,对变量自身的值加1 |
自减: -- | 放在某个变量前面或者后面,对变量自身的值减一 |
a++先赋值再自增,++a,先自增再赋值
赋值运算符
除了基本的赋值运算符,我们这里主要学习一下扩展的赋值运算符。有 += -= *= /= %=
符号 | 用法 | 作用 | 底层代码形式 |
+= | a+=b | 加后赋值 | a = (a的类型)(a + b); |
-= | a-=b | 减后赋值 | a = (a的类型)(a - b); |
*= | a*=b | 乘后赋值 | a = (a的类型)(a * b); |
/= | a/=b | 除后赋值 | a = (a的类型)(a / b); |
%= | a%=b | 取余后赋值 | a = (a的类型)(a % b); |
关系运算符
符号 | 例子 | 作用 | 结果 |
> | a > b | 判断a是否大于b | 成立返回true,不成立返回false |
>= | a >= b | 判断a是否大于等于b | 成立返回true,不成立返回false |
< | a < b | 判断a是否小于b | 成立返回true,不成立返回false |
逻辑运算符
符号 | 称呼 | 例子 | 运算逻辑 |
& | 逻辑 与 | 2 > 1 & 3 < 2 | 多个条件必须是true,结果才是true;有一个是 false,结果就是false |
| | 逻辑 或 | 2 > 1 | 3 > 5 | 多个条件中主要有一个是true。结果就是true |
! | 逻辑 非 | !(2 > 1) | 就是取反:你真我假,你假我真。 |
^ | 逻辑 异或 | 2 > 1 ^ 3 > 1 | 前后条件的结果相同,就直接返回false,前后条 件的结果不同,才返回true |
&& | 短路 与 | 2 > 10 && 3 > 2 | 判断结果与"&"一样,过程不同:左边为false, 右边就不执行 |
|| | 短路 或 | 2 > 1 || 3 < 5 | 判断结果与"|"一样,过程不同:左边为true,右 边就不执行 |
位运算符
在计算机内部,数据以二进制位(0和1)的形式存储和处理。计算机通过将数据转换 为二进制形式,将其存储在内存中,并对其进行操作和计算。不同的数据类型在内存 中占据不同长度的二进制位,以便正确地表示和处理数据。
1. 原码 原码是一种最简单的机器数表示法,其中最高位表示符号位,其余位表示该数的二进 制的绝对值。
2. 反码 正数的反码与原码相同,而负数的反码是其原码除符号位外,按位取反的结果。
3. 补码 正数的补码等于其原码,而负数的补码等于其反码加1
运算 符 | 含义 | 运算规则 |
& | 按位与 | 两个操作数都是1,结果才是1。 |
| | 按位或 | 两个操作数任意一个是1,结果就是1。 |
^ | 按位异或 | 两个操作数相同,结果为0;两个操作数不同,结果为 1. |
~ | 按位非 | 操作数为1,结果为0;操作数为0,结果为1。 |
<< | 左移 | 右侧空位补0。m<<n=m*2^n |
>> | 右移 | 左侧空位补最高位(0或1),即符号位。m>>n=m/2^n |
>>> | 无符号右 移 | 左侧空位补0。 |
计算5&6的结果
5:101
6:110
100=4
计算5|6的结果
5:101
6:110
111=7
计算3<<2的结果
3: 3*2^2=12 3: 11 1100
三元运算符
数据类型 变量名 = 关系表达式 ? 值1 : 值2;
public class OperatorDemo6 {
public static void main(String[] args) {
// 目标:掌握三元运算符的基本使用。
double score = 58.5;
String rs = score >= 60 ? "成绩及格" : "成绩不及格";
System.out.println(rs);
// 需求2:找出2个整数中的较大值,并输出。
int a = 99; int b = 69;
int max = a > b ? a : b;
System.out.println(max);
// 需求3:找3个整数中的较大值。
int i = 10;
int j = 45;
int k = 34;
// 找出2个整数中的较大值。
int temp = i > j ? i : j;
// 找出temp与k中的较大值。
int max2 = temp > k ? temp : k;
System.out.println(max2); } }
运算优先级
// 这里&&先算 相当于 true || false 结果为true
System.out.println(10 > 3 || 10 > 3 && 10 < 3); // true 1
如果想让一些数据先算可以加()
//有括号先算 相当于 true && false 结果为false
System.out.println((10 > 3 || 10 > 3) && 10 < 3); //false