java基础复习 - 2 - 运算符
运算符
算术运算符
+正号-负号+加-减*乘/除%取模// 在%的本质看一个公式 a%b = a - a/b*b // -10%3 => -10 - (-10)/3*3 = -10 - (-9) = -1 System.out.println(10%3); // 1 System.out.println(-10%3); // -1 System.out.println(10%-3); // 1 System.out.println(-10%-3); // -1++自增// 经典面试题 int i = 1; i = i++; // 流程:(1) temp = i; (2)i = i+1; (3)i = temp System.out.println(i); // 1 int i = 1; i = ++i; // (2) temp = i; (1)i = i+1; (3)i = temp System.out.println(i) // 2--自减+字符串相加
赋值运算符
- 基本复制运算符 =
- 复合复制运算符,符合运算符会进行类型转换
- += a+=b a=a+b
- -=
- *=
- /=
- %=
byte b = 3; b+=2;// 等价于 b = (byte)b + 2; b++; // b = (byte)(b + 1);
关系运算符
==相等于!=不等于<小于>大于<=小于等于>=大于等于instanceof
优先级:

逻辑运算符
&&短路与||短路或!取反&逻辑与|逻辑或^逻辑异或
位运算符
java中有7个位运算符(按位与& 按位或| 异或^ 按位取反~ >> << >>>)
- 按位与 : 两位全为1,结果为1, 否则为0
- 按位或 : 两位有一个为1,结果为1,否则为0
- 按位异或 : 两位一个为0,一个为1,结果为1,否则为0
- 按位取反 : 0->1,1->0
~-2 -2原码 10000000 00000000 00000000 00000010 -2反码 11111111 11111111 11111111 11111101 -2补码 11111111 11111111 11111111 11111110 ~=2 = 00000000 00000000 00000000 00000001 = 1 - 算术右移>> : 低位溢出,符号位不变,并用符号位补溢出的高位
- 算术左移<< : 符号位不变,低位补0
>>>逻辑右移也叫无符号右移,运算规则是 : 低位溢出,高位补0int a = 1 >> 2; // int b = -1 >> 2; // int c = 1 << 2; // int d = -1 << 2; // int e = 3 >>> 2; //
三元运算符
三元运算符,表达式1和表达式要为可以赋给接受变量的类型或可以自动转换
int a = 10;
int b = 99;
// 1. a>b 为false
// 2. 返回b--,先返回b的值然后再b-1
// 3. 返回的结果是99
int result = a > b ? a++ : b--;

浙公网安备 33010602011771号