java表达式陷阱

int a = 10;  
       int b = a + (a = 5) + a + (a = 10);  //10+5+5+10 先算括号
       System.out.println(b);//b = 30  
int i = 1;  
     i = (i=i+(i+(i=2)+i)+i)+3;  //1+1+2+2+2+3
     System.out.println(i);//i = 11  
System.out.println(-11 % -7);//-4     注:模运算中,第一个操作数提供结果值的符号,第一个和第二个操作数的绝对值取模后作为结果值的绝对值  
int a = 10;  
       int b = 10;  
       double c = 10.0;  
       System.out.println(a == b);//true  
       System.out.println(a == c);//true  
System.out.println(3.0*10 == 30.0);//true  
        System.out.println(3.141*10 == 31.41);//true  
        System.out.println(3.14*10 == 31.4);//false        注:3.14*10 = 31.400000000000002  
        System.out.println(3.1415*10 == 31.415);//false        注:3.1415*10 = 31.415000000000003  
int a = 10;  //0000 0000 0000 0000 0000 0000 0000 1010
      a = a<<10;  //0000 0000 0000 0010 1000 0000 0000 = 1024*10
      a = a<<22;  //在 0000 0000 0000 0010 1000 0000 0000 的基础上左移22位,结果是0
      int b = 10;  
      b = b<<32;  //int类型的数据占4字节,即32位,最大可移31位。超过31位的,取低五位。例如 32的二进制是10 0000,低五位是0,即左移0位。
      System.out.println(a);//0        注:第一步左移10位,第二步移动的a并非原始的a,而是a左移10位之后的a,这次左移22位之后把非零位移到边界之外了,补零之后值变为0  
      System.out.println(b);//10        回归原始的10  

原博客戳这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值