运算符
- 算数运算符:+ - * / % ++ --
- 赋值运算符:= += -= *= /=
- 关系运算符:> < >= <= == != instanceof
- 逻辑运算符:&& || !
- 位运算符:& | ^ ~ >> << >>>
- 条件运算符?:
自增理解
int a = 3; int b = a++; // 先赋值,再自增,相当于在后面执行一句a = a + 1 //a = a + 1 System.out.println(a); // 4 // a = a + 1 int c = ++a;// 先自增,再赋值,相当于在前面执行一句a = a + 1 System.out.println(a); // 5 System.out.println(b); // 3 System.out.println(c); // 5
注意点:
short a = 10; a = a + 1; // 编译报错 a = (short)(a + 1); // 成功 a++; // 成功,自增不会改变原来的数据类型
位运算
A = 0011 1100 B = 0000 1101 A&B= 0000 1100 与,位都为1,才为1 A|B= 0011 1101 或,有一个为1,则为1 A^B= 0011 0001 异或,位相同则为0,不同则为1 公式:m = (m^n)^n ~B = 1111 0010 非,取反 // << 左移 在一定范围内(如果1移动到符号位,即最高位,就变成负数了,所以说一定范围内),相当于*2,右边移动之后空出来的地方用0补齐 // >> 右移 在一定范围内相当于/2,如果是正数,左边移动之后空出来的地方用0补齐;如果是负数,左边移动之后空出来的地方用1补齐; // >>> 无符号右移 在一定范围内相当于/2,左边移动之后空出来的地方用0补齐; 0000 0000 0 0000 0001 1 0000 0010 2 1左移一位<< 就是4 0000 0011 3 0000 0100 4 1左移一位<< 就是8 0000 1000 8 0001 0000 16
字符串连接
int a = 10; int b = 20; System.out.println(a+b+""); // 30 System.out.println(""+a+b); // 1020
三元运算符
// x?y:z // 如果x为真,则y,否则z int score = 59; String type = score>60 ? "及格":"不及格"; System.out.println(type);