一、赋值运算符
- 基本语法
数据类型 变量名 = 数值/变量;
double num = 60.5;
double num2 = 70.5;
System.out.println("转换前1:"+num+"转换前2:"+num2);
double temp = num;
num = num2;
num2 = temp;
System.out.println("转换后1:"+num+"转换后2:"+num2);
二、算术运算符
- 基本算数运算符
+、- 、* 、/ 、% 、++、 --
// 变量++ :先操作在运算
// ++变量:先运算再操作
int num3 = 1;
System.out.println(num3++); // 1
System.out.println(++num3); // 3
int num = 326;
int bai = 326 / 100;
int shi = (326 % 100) / 10;
int ge = 326 % 10;
int sum = bai + shi + ge;
System.out.println("百位、十位、个位的和是:"+sum);
- 复合算术运算符
+=、 -= 、*=、 = 、%=
变量1 += 变量2 : 先求出变量1和变量2之和 ,再赋值给变量1
三、关系运算符
==、!=、>、 < 、>= 、<=
>、 < 、>= 、<= 只能用作数值比较
int a = 1;
int b = 2;
boolean flag = a==b;
System.out.println(flag); // fasle
四、逻辑运算符
- 逻辑运算符只能用于boolean类型进行比较,判断boolean数据之间的逻辑关系(与、或、非)
&(与)、|(或)、!(非)、&&(短路与)、||(短路或) - 变量1 & 变量2 : 只有当变量1和变量2都为true 结果为true 否则为false
- 变量1|变量2:只要变量1和变量2只要有一个位true 结果为true 否则为false
- !变量1 :若变量1为true 结果为false,若变量1为false 结果为true
- 变量1&&变量2:只有当变量1和变量2都为true 结果为true 否则为false
- 变量1||变量2:只要变量1和变量2只要有一个位true 结果为true 否则为false
&& 、|| 比 & 、| 效率高
&&:先判断变量1 ,如果变量1为false ,不进行变量2的运算,&不管变量1是否为false ,都进行变量2的运算。
int a = 1;
int b = 2;
System.out.println((a++ == b) & (++a == b)); // false a++ 先判断再++
System.out.println(a); // 3
int num1 = 1;
int num2 = 2;
System.out.println((num1++ == num2) && (++num1 == num2)); // false
System.out.println(num1); // 2
五、条件运算符(三元运算符、三目运算符)
根据不同的条件给同一个变量赋不同的值
变量=条件?值1:值2
int num = 1<2?1:0;
System.out.println(num); //1
六、位运算符
- 十进制和二进制的转换
十进制转二进制:
目标数除以2,若能除尽,该位计作0,若除不尽,该位计作1,再对商除以2,若能除尽,该位计作0,若除不尽,以此类推,直到商为0,然后把每位结果进行反序组合
二进制转十进制:
从目标数的最右侧算起,本位的数值乘以本位的权重(2的第几位的位次-1次方),将每一位的值进行相加
- 位运算符:&(按位与)、|(按位或)、^(按位异或)、<<(左移)、>>(右移)
变量1&变量2:先把变量1和变量2转为二进制,然后每一位的数字一一对应,进行比较判断,若都为1该位计作1,否则记为0
变量1|变量2:先把变量1和变量2转为二进制,然后每一位的数字一一对应,进行比较判断,只要有一个为1,该位计作1,否则计作0.
变量1^变量2:先把变量1和变量2转为二进制,然后每一位的数字一一对应,进行比较判断,对应位相同计作0,否则计作1
变量1 << 变量2:变量1乘以2的变量2次方
2 << 3 : 2*8 = 16
变量1 >> 变量2:变量1除以2的变量2次方
2 << 3:2/8 = 0
运算符优先级 :
! > 算数运算符 > 关系运算符 > 逻辑运算符(&& > ||)