Java中运算符 "|" 和 "||" 以及 "&" 和 "&&" 区别

博客主要介绍了Java中运算符 “|” 和 “||” 以及 “&” 和 “&&” 的区别。“|” 和 “&” 不论左侧结果如何,右侧语句都会判断;“||” 若左侧为true,不再运算右侧;“&&” 若左侧为false,不再判断右侧。

Java中运算符 “|” 和 “||” 以及 “&” 和 “&&” 区别

  • |运算符:不论运算符左侧为true还是false,右侧语句都会进行判断,如下代码:
    int a = 1, b = 1;
    if (a++ == 1 | ++b == 2) {
        System.out.println("true");
    }
    System.out.println("a= " + a + "  ,b=  " + b);
    
    左侧为true,右侧为true,输入出结果为:
    true
    a= 2  ,b=  2
    

  • ||运算符:若运算符左边为true,则不再对运算符右侧进行运算,如下代码:
    int a = 1, b = 1;
    if (a++ == 1 || ++b == 2) {
        System.out.println("true");
    }
    System.out.println("a= " + a + "  ,b=  " + b);
    
    左侧为true,所以没有判断运算符右侧语句,输出结果为:
    true
    a= 2  ,b=  1
    

  • &运算符 与 |运算符 类似:不论运算符左侧为true还是false,右侧语句都会进行判断,如下代码:
    int a = 1, b = 1;
    if (a++ == 2 & ++b == 2) {
        System.out.println(true);
    } else {
        System.out.println(false);
    }
    System.out.println("a= " + a + "  ,b=  " + b);
    
    &运算符左侧为false,单依然会运行右侧语句输出为:
    false
    a= 2  ,b=  2
    

  • &&运算符 与 ||运算符 类似:若运算符左侧为false则不再对右侧语句进行判断,如下代码:
    int a = 1, b = 1;
    if (a++ == 2 && ++b == 2) {
        System.out.println(true);
    } else {
        System.out.println(false);
    }
    System.out.println("a= " + a + "  ,b=  " + b);
    
    输出结果:
    false
    a= 2  ,b=  1
    

参考

Java中,`==` 运算符主要用于比较对象的引用(即内存地址),而 `equals()` 函数则是用来比较对象的内容是否相等,这是针对实现了 `Comparable` 或者 `Object` 类的 `equals()` 方法的类而言。以下是两者之间的关键区别: 1. **比较类型**: - `==` 对象比较:用于比较对象引用是否指向同一个内存位置,适用于基本数据类型(如 int、char 等)以及所有引用类型(包括 String、数组等)。 - `equals()` 内容比较:仅限于实现了 `equals()` 方法的对象,比如 String 自定义类实例,比较的是对象内部的属性或值是否相等。 2. **默认行为**: - 对于大多数原始类型的变量,`==` 的默认行为就是比较值是否相等。 - 对于 `String` 类型,`==` 比较的是字符串字面量是否完全相同,`equals()` 比较的是字符串内容是否一致。 - 对于其他非基本类型,如果没有覆盖 `equals()` 方法,其行为通常取决于其父类 `Object` 的默认 `equals()` 实现,通常也检查引用是否相同。 3. **自定义行为**: - 开发者可以覆盖 `equals()` 方法来定制对象内容的比较规则,使其适应特定业务场景。 示例: ```java String str1 = new String("hello"); String str2 = new String("hello"); // 使用 == 比较引用 System.out.println(str1 == str2); // false,因为它们是不同的对象 // 使用 equals() 比较内容 System.out.println(str1.equals(str2)); // true,因为它们包含相同的字符序列 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值