运算符
i++ 与++i
int i=0;
int i2=i++;
int j=0;
int j2=++j;
System.out.println(i2); 0
System.out.println(j2); 1
0: iconst_0
1: istore_1
2: iload_1
3: iinc 1, 1
6: istore_2
7: iconst_0
8: istore_3
9: iinc 3, 1
12: iload_3
13: istore 4
++是非线程安全的 3个cpu指令 取值,累加,存储 无法保证原子性
2: iload_1
3: iinc 1, 1
6: istore_2
如何解决非线程安全
- synchronized{}
- 申明锁
- 使用原子类型 例如AtomicInteger
private volatile int value;
按位&和|
7&2=2
00000111
00000010
——————
00000010=2
逻辑&&与||
短路,前一个条件能判断,不再执行下一个条件
左移<<
7<<2
7 00000111
00011100=28
右移>>
7>>2
7 00000111
00000001=1
-7>>1
7 00000111
7反码 11111000
7补码 反码+1 11111001
11111100
符号位不变其他位取反 10000011
+1 10000100=-4
无符号右移>>> 忽略符号位
-7>>>1
-7 11111001
01111100=124
int 4byte 取1字节演示
流程控制
do{}while();
跳出循环break;return;
swith( ){ };
1.byte, char, short, int,和其四类的包装类,枚举,字符串
2.break