1. 位移运算符
>>1 | <<1 | >>>1 | <<<1 |
---|---|---|---|
右移一位(带符号位) | 左移一位(带符号位) | 右移一位(带符号位) | 左移一位(不带符号位) |
2. 按位运算符和逻辑运算符
逻辑运算符
有短路
功能,拿&
和&&
来举例:
public class Test {
public static void main(String[] args) {
boolean a = true;
boolean b = true;
boolean c = (a = (1==0)) & (b = (1==0));
System.out.println(a+","+b+","+c);
}
}
运行结果:
false,false,false
public class Test {
public static void main(String[] args) {
boolean a = true;
boolean b = true;
boolean c = (a = (1==0)) && (b = (1==0));
System.out.println(a+","+b+","+c);
}
}
运行结果:
false,true,false
原因:
&&有短路功能,因为符号两端都为true才返回true,所以如果左端为false结果肯定为false,造成短路,符号右边的不会运行,所以第二段代码,b并不会被赋为false。
3浮点数
public class ClassLoaderTest {
public static void main(String[] args) {
float a = 1f;
float b = 0.9f;
System.out.println(a-b);
}
}
运行结果:
0.100000024
原因:浮点数
是使用科学计数法
来表示的,科学计数法的有效数字必须在[1,9]
之间,所以,科学计数法不能表示0,所以不可能为0
结果0.100000024
的具体解释:
PS: 科学计数法的两种写法:
4x10 = 4e6
补充链接: