JAVA面试4-运算符和流程控制

运算符
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

如何解决非线程安全

  1. synchronized{}
  2. 申明锁
  3. 使用原子类型 例如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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值