JAVA关于或和与(||、|、&&、&)的使用简单思路

简介: 关于与(&&:并且)、或(||:或者)

关于与(&&:并且)、或(||:或者)


学术话语:

或(或者):(满足单方面一个就好了),不挑食,你满足了,那就跟我走吧。

“||”(短路或): 如果左边计算后的操作数为true,右边则不再执行,返回true;


“|”:(逻辑或)前后两个操作数都会进行计算。也就是说:“|”不存在短路。


与(并且):(满足双方两个才可以)为了约束双方值不越界,我得看看这两个有没有都满足我条件才能带走。

&&(短路与),当第一个判断条件不满足要求时(返回false),第二个判断条件就不会执行;只有当两个判断条件都返回true时,整个逻辑运算才返回true。

&(逻辑与),不论什么情况下,两边的判断条件都会执行,当两边都返回true时,按位与才返回true。


直观解释:


最直观解释就是||和&&左边有一个不通过就不去执行右边了,没必要浪费时间。而|和&不管左边有没有通过,都要磨磨唧唧两边都要先执行一遍,效率低


||、&&会先进行左边判断通过与否,再进行右边判断,再执行有没有通过


|、&:就是先两边都执行,再去同时判断有没有通过。相当于||的一个逆向思路


开发中一般使用&&和||比较好一点,因为效率高


代码例子:

package learn;
public class WrongCode {
    public static void main(String[] args) {
        //1.短路与:两边都正确,结果才正确
        //如果左边为true,那就右边也进行判断输出。
        //如果左边为false,右边就不会进行输出判断。
        boolean a = m1()&&m2();
        System.out.println(a);//m1 m2 true
        //短路或:两边只要有一边是正确的,结果就是正确的
        //如果左边为true,那就右边短路不会进行判断了
        //如果左边为false,那就去右边进行执行判断
        boolean b = m1()||m2();
        System.out.println(b);//m1 true
        //非短路与:两边都正确,结果才正确
        //左边不管是true和false,都会往下执行
        boolean c = m1()&m2();
        System.out.println(c);//m1 m2 true
        //非短路或:只要任意一边正确,结果就正确
        //左边不管是true和false,都会往下执行
        boolean d = m1()|m2();
        System.out.println(d);//m1 m2 true
    }
    public static boolean m1(){
        System.out.println("m1");
        return true;
    }
    public static boolean m2(){
        System.out.println("m2");
        return true;
    }
}


目录
相关文章
|
消息中间件 缓存 NoSQL
【Java知识点大全】(九)
【Java知识点大全】
|
7月前
|
Java
✨【Java基础】每天一道Java基础+面试题——Day02✨
✨【Java基础】每天一道Java基础+面试题——Day02✨
47 0
|
设计模式 算法 安全
|
Java
Java学习 8.Java-递归
Java学习 8.Java-递归
96 0
|
存储 关系型数据库 MySQL
【Java知识点大全】(五)
【Java知识点大全】
|
存储 缓存 NoSQL
【Java知识点大全】(八)
【Java知识点大全】
java202304java学习笔记第六十四天-ssm-异常处理的思路1
java202304java学习笔记第六十四天-ssm-异常处理的思路1
40 0
java202304java学习笔记第六十四天-ssm-异常处理的思路2
java202304java学习笔记第六十四天-ssm-异常处理的思路2
49 0
java202302java学习笔记第五天-递归讲解1
java202302java学习笔记第五天-递归讲解1
60 0
java202302java学习笔记第五天-递归讲解1
java202302java学习笔记第五天-递归讲解2
java202302java学习笔记第五天-递归讲解2
65 0
java202302java学习笔记第五天-递归讲解2