左移操作符<<优先级很低
int a = 1, b = a << 1 + 1; // b = 4而不是3
Java的long自动转换成float
float f = 1111111211L;
if(f == 1111111200.0F)
System.out.println(f); // 输出为:1.11111117E9
java中float占4字节,而long占8字节,但long可以自动转换成float。原因在于float在计算机内存中是采用浮点数存储,比整数的表示范围要更大,但会丢失精度。浮点数用科学计数法表示,从上面的例程可看到,对于float类型只能表示小数点后7位的数据,1111111211和1111111200在转换成float时,都是用1.11111117E9代替。