java基础1 --& &&操作符
1 & 和 &&
共同点 都可以作为逻辑与(and) 都 符合两边的表达式的结果都为true 时 才返回true 否则有一方为false 返回结果都为false
&& 还有短路的功能 比如 if(str !=null && !str.equals(")) 如果str = null 时 就不会报.NullPointerException 异常的
&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
以下是&& 的具体实现 因为有短路功能 所以 不会抛出异常 j 的值在程序执行完毕之后 不会增加
public static void opentionDirectShort(){
String str = null;
//以下if 中 用 && 可以避免抛出 Exception in thread "main" java.lang.NullPointerException 异常
if (str != null && str.equals("")) {
System.out.println("条件符合 ");
}else{
System.out.println("使用&& 条件不符合 直接短路了 就不会走str.equals(\"\") 也就不会出现NullPointerException异常了");
}
System.out.println("===============以上是短路 因为短路未抛出异常 以下是因为短路 j的值没有增加 =================");
int i = 0;
i += 1;
System.out.println(i);
int j = 1;
if (i > 2 && ++j > 0) {
System.err.println("true");
} else {
System.out.println("false");
}
System.out.println(i + ": 短路后 j 是不会累加的 " + j);
}
以下是 & 做逻辑的例子 没有短路功能 所以j的值增加
public static void opentionand1(){
int i = 0;
i += 1;
System.out.println(i);
int j = 1;
if (i > 2 & ++j > 0) {
System.err.println("true");
} else {
System.out.println("false");
}
System.out.println(i + ":" + j);
}
以下为 & 作为位运算符的例子
public static void opentionand2(){
int a = 2; // 2 的二进制为 10
int b = 3; //3 的二进制为 11
int c = a&b; //保持 规则 全1 则为1 其他都是0 的原则 a&b的二进制为 10 转成十进制为 2
System.out.println(c);
}