《漫画Java编程》导读之语法篇-短路与(&&)以及短路或(II)操作符和非短路与(&)以及非短路或操作符(|)的区别

如题所述

让我们深入探索孙卫琴老师的经典著作《漫画Java编程》中的短路与(&&)与非短路与(&)、短路或(||)与非短路或(|)的区别。这些操作符在编程中的巧妙运用,能提升代码的效率和可读性。

短路与(&&)与非短路与(&)

短路操作符“&&”在执行时,如果左表达式的布尔值为false,整个表达式的值即为false,右边的表达式将不再执行,从而节省计算资源。比如:

int a = 1;
boolean result = a 0 && (a += 10) > 5; // 输出:false, a=1

相比之下,非短路与(&)则会始终执行两边的表达式,即使左表达式为false:

int a = 1;
boolean result = a 0 & (a += 10) > 5; // 输出:false, a=11

短路或(||)与非短路或(|)

短路或(||)原理类似,当左表达式为true时,整个表达式即为true,右表达式不会被执行。例如:

int a = 1;
boolean result = a > 0 || (a += 10) > 5; // 输出:true, a=1

int a = 1;
boolean result = a > 0 | (a += 10) > 5; // 输出:true, a=11

短路操作符的实际应用

短路操作符在避免异常方面尤其重要。如在greet()方法中,使用非短路操作符可能会引发空指针异常:

public void greet(Employee m) {
if (m != null & m.name != null) {
System.out.println("Hello: " + m.name);
}
}

通过将“&”替换为短路的“&&”,可以防止因参数m为null导致的NullPointerException:

public void greet(Employee m) {
if (m != null && m.name != null) {
System.out.println("Hello: " + m.name);
}
}

理解这些操作符的特性,不仅有助于编写更高效、更优雅的代码,还能提升代码的可维护性。
温馨提示:答案为网友推荐,仅供参考
相似回答