JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法

本文详细解析了Java中&、&&、|、||四种逻辑运算符的区别及使用场景,通过具体代码案例展示了它们在空指针异常处理上的表现差异。

1.使用规则:

(1)& 可以用作逻辑与的运算符,表示逻辑与(and)

      a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

      b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断

(2)&& 可以用作逻辑与的运算符,表示逻辑与(and)

      a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

      b、第一个条件不成立,后面的条件均不进行判断,返回false

(3)| 可以作逻辑或运算符,表示逻辑或(or)

      a、当运算符有一边为true时,整个运算结果为true

      b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断

(4)|| 可以作逻辑或运算符,表示逻辑或(or)

      a、当运算符有一边为true时,整个运算结果为true

      b、第一个条件成立,后面的条件均不进行判断,返回true

2.使用案例:

    String s = null;

   1. if((s!=null)&(s.length()>0)){}

   2. if((s!=null)&&(s.length()>0)){}

   3. if((s==null)|(s.length()==0)){}

   4. if((s==null)||(s.length()==0)){}

上述案例在java运行情况中,1,3均抛出NullPointerException异常。

 

转载于:https://www.cnblogs.com/yb0721/p/10036626.html

### Java逻辑运算符 `&&`、`||` 按位运算符 `&`、`|` 的区别 #### 逻辑短路运算符 vs 按位运算符Java 中,逻辑运算符 `&&` `||` 被称为短路运算符。这意味着对于 `&&` 来说,只有当第一个操作数为真时才会计算第二个操作数;而对于 `||`,只要第一个操作数为真就不会再去评估第二个操作数。 相比之下,按位运算符 `&` `|` 不具备这种特性,在任何情况下都会对两个操作数进行求值[^1]。 #### 示例代码展示差异 下面通过具体的例子来说明这些运算符之间的不同之处: ```java public class OperatorExample { public static void main(String[] args) { boolean result; // 使用 && 运算符 int a = 5; int b = 10; if (a > 0 && checkCondition(b)) { // 如果 a>0 成立,则继续检查checkCondition(b),否则跳过此部分 System.out.println("Using &&, both conditions are true."); } // 使用 & 运算符 if ((a > 0) & checkCondition(b)) { // 即使 a>0 已经满足条件也会执行checkCondition(b) System.out.println("Using &, always evaluates second condition."); } // 类似地对比 || | String str = null; try{ if(str!=null || "test".equals(str)){// 只要str!=null就不再调用.equals方法 System.out.println("String is not null or equals to 'test'"); } if((str!=null)|"test".equals(str)){//无论str是否为空都将尝试调用.equals方法可能导致NullPointerException异常 System.out.println("This line may throw an exception"); } }catch(NullPointerException e){ System.out.println("Caught NullPointerException due to using | instead of || "); } } private static boolean checkCondition(int value) { System.out.println("Checking condition with value: " + value); return value > 0; } } ``` 这段程序展示了如何使用不同的逻辑/按位运算符以及它们所带来的行为变化。特别是注意到了 `&` `|` 总是对右侧表达式进行了求值,即使左侧已经决定了最终的结果[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值