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
原博客戳这里