逻辑运算符

一 介绍

用于连接多个条件( 多个关系表达式) , 最终的结果也是一个 boolean 值。

  • &:逻辑与
  • &&:短路与
  • |:逻辑或
  • ||:短路或
  • 取反
  • ^:异或

在这里插入图片描述

二 逻辑运算规则

  1. a&b : & 叫逻辑与: 规则: 当 a 和 b 同时为 true ,则结果为 true, 否则为 false
  2. a&&b : && 叫短路与: 规则: 当 a 和 b 同时为 true ,则结果为 true,否则为 false
  3. a|b : | 叫逻辑或, 规则: 当 a 和 b , 有一个为 true ,则结果为 true,否则为 false
  4. a||b : || 叫短路或, 规则: 当 a 和 b , 有一个为 true ,则结果为 true,否则为 false
  5. !a : !叫取反, 或者非运算。 当 a 为 true, 则结果为 false, 当 a 为 false 是, 结果为 true
  6. a^b: ^叫逻辑异或, 当 a 和 b 不同时, 则结果为 true, 否则为 false

三 && 和 & 规则/使用

条件1 && 条件2 两个条件都为 true, 结果为 true,否则 false
条件1 & 条件2 两个条件都为 true, 结果为 true,否则 false

代码演示

public static void main (String[] args) {// 演示 && 和 & 的使用区别// && 短路与int age = 50;if (age > 20 && age < 90){System.out.println("ok100");}// & 逻辑与if (age > 20 & age < 90){System.out.println("ok200");}// 区别int a = 4;int b = 9;// 短路与,第一个条件为false,后面的条件不再执行
//        if(a < 1 && ++b < 50){
//            System.out.println("ok300");
//        }// 逻辑与,第一个条件为false,后面的条件依然会进行判断if(a < 1 & ++b < 50){System.out.println("ok300");}System.out.println("a=" +a + " b="+b);
}
  1. &&短路与: 如果第一个条件为 false, 则第二个条件不会判断, 最终结果为 false, 效率高
  2. & 逻辑与: 不管第一个条件是否为 false, 第二个条件都要判断, 效率低

四 || 和 | 规则/使用

条件1 || 条件2 两个条件中只要有一个成立, 结果为 true,否则为 false
条件1 | 条件2 只要有一个条件成立, 结果为 true,否则为 false

代码演示

public static void main (String[] args) {// 演示 || 和 | 的使用区别// || 短路或int age = 50;if (age > 20 || age < 30){System.out.println("ok100");}// | 逻辑或if (age > 20 | age < 30){System.out.println("ok200");}// 区别int a = 4;int b = 9;// 短路或,第一个条件为true,后面的条件不再执行。最终结果为true,效率高
//        if(a < 10 || ++b < 50){
//            System.out.println("ok300");
//        }// 逻辑或,第一个条件为true,后面的条件依然会进行判断if(a < 10 | ++b < 50){System.out.println("ok300");}System.out.println("a=" +a + " b="+b);
}
  1. ||短路或: 如果第一个条件为 true, 则第二个条件不会判断, 最终结果为 true, 效率高
  2. | 逻辑或: 不管第一个条件是否为 true, 第二个条件都要判断, 效率低

测试代码

public static void main (String[] args) {int x = 5;int y = 5;
//        if(x++ == 6 & ++y == 6){ // x++ 先比较,再自增,所以 x++ == 6为false,逻辑与后续继续执行
//            x =11;
//        }//        if(x++ == 6 && ++y == 6){ // x++ 先比较,再自增,所以 x++ == 6为false。短路与后续不执行
//            x =11;
//        }//        if(x++ == 5 | ++y == 5){ // x++ 先比较,再自增,所以 x++ == 5为true,逻辑或后续执行
//            x =11;
//        }if(x++ == 5 || ++y == 5){ // x++ 先比较,再自增,所以 x++ == 5为true,短路或后续不执行x =11;}System.out.println("x="+x +",y="+y);System.out.println("=======================");boolean a = true;boolean b = false;short z = 46;if((z++ == 46) && (b = true)) { // z++ == 46 ,先判断,后自增为 47 ; b = true 是赋值,不是判断相等z++; // z= 48}System.out.println("z="+z);if ((a = false) || (++z == 49)) { // z= 49z++; // z = 50}System.out.println("z="+z);}

五 !取反 和 ^异或 的规则/使用

!条件: 如果条件本身成立, 结果为 false, 否则为 true
a^b: 叫逻辑异或, 当 a 和 b 不同时, 则结果为 true, 否则为 false

代码演示

public static void main (String[] args) {// ! 操作是取反System.out.println(90 > 20);System.out.println(!(90 > 20));// a^b 逻辑异或,当 a 和 b 不同时,则结果为true,否则为falseboolean flag = (10 > 1 ) ^ (3 > 5);System.out.println("flag="+flag);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K210基础实验——独立按键中断

前言 学习K210开发板的独立按键和中断功能 一、涉及到的外设资源是K210开发板上的BOOT按键和RGB灯 二、BOOT按键按下&#xff0c;MCU上连接BOOT的IO口变为低电平&#xff0c;松开后为高电平 三、引脚对应关系 BOOT : IO16 RGB灯&#xff1a; R:IO6 G:IO7 B:IO8 四、在…

【linux】多路径|Multipath I/O 技术

目录 简略 详细 什么是多路径? Multipath安装与使用 安装 使用 Linux下multipath软件介绍 附录 配置文件说明 其他解 简略 略 详细 什么是多路径? 普通的电脑主机都是一个硬盘挂接到一个总线上&#xff0c;这里是一对一的关系。 而到了分布式环境&#xff0c;主机和存储网络连…

UDP协议深度解析:从原理到应用全面剖析

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统 前言 随着互联网的蓬勃发展&#xff0c;网络通信协议成为了支撑其稳定运行的关键。UDP协议作为网络通信协议中的重要一员&…

华为ensp中rip和ospf路由重分发 原理及配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月20日20点21分 路由重分发&#xff08;Route Redistribution&#xff09;是指路由器将从一种路由协议学习到的路由信息&#xff0c;通过另一种路由协议通告出去的功…

现货白银保证金交易要先分析趋势

现货白银是保证金交易品种&#xff0c;买卖过程中可能会涉及数十倍的资金杠杆&#xff0c;所以它对投资者的分析水平和交易水平的要求都比较高&#xff0c;所以在进入这个市场之前&#xff0c;投资者需要先学习一些基本的分析方法&#xff0c;当中可以分为基本面和技术面两大流…

C++智能指针(二十)

一.RAII&#xff08;Resource Acquisition Is Initialization&#xff09; RAII资源获取即初始化&#xff0c;RAII的思想就是在构造时初始化资源&#xff0c;或者托管已经构造的资源。在析构的时候释放资源。一般不允许复制或赋值&#xff0c;并且提供若干的资源访问的方法。比…

URL地址解析至页面展示全过程(面试详细解答)

目录 1、解析URL 2、缓存判断 ​编辑3、DNS解析 ​编辑4、获取MAC地址 5、TCP三次握手 6、HTTP请求 7、服务器处理请求&#xff0c;返回HTTP响应 8、页面渲染 9、TCP四次挥手 10、浏览器解析HTML 11、浏览器布局渲染 1、解析URL 首先会对 URL 进行解析&#xff0c;…

RS232、RS485、RS422、TTL、CAN各自的区别

目录 一&#xff1a;工业串口通信标准RS232、RS485、RS422的区别 第一个区别、硬件管脚接口定义不同 第二个区别、工作方式不同 第三个区别、通信方式不同 第四个区别&#xff0c;逻辑特性不同 第五个区别、抗干扰性、传输距离和传输速率也不同 二&#xff1a;RS232、RS…

docker安装并跑通QQ机器人实践(4)-bs-cqhttp搭建

go-cqhttp&#xff0c;基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现&#xff0c;只需简单的配置, 就可以基于 go-cqhttp 使用框架开发&#xff0c;具有轻量, 原生, 高并发, 低占用, 跨平台等特点。 1 go-cqhttp 官网及可执行文件下载链接 go-cqhttp 官网&#xff1a;ht…

【Linux】详解进程通信中信号量的本质同步和互斥的概念临界资源和临界区的概念

一、同步和互斥的概念 1.1、同步 访问资源在安全的前提下&#xff0c;具有一定的顺序性&#xff0c;就叫做同步。在多道程序系统中&#xff0c;由于资源有限&#xff0c;进程或线程之间可能产生冲突。同步机制就是为了解决这些冲突&#xff0c;保证进程或线程之间能够按照既定…

泛型的初步认识(2)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x…

优思学院|ISO45001职业健康安全管理体系是什么?

ISO45001:2018是新公布的国际标准规范&#xff0c;全球备受期待的职业健康与安全国际标准&#xff08;OH&S&#xff09;于2018年公布&#xff0c;并将在全球范围内改变工作场所实践。ISO45001将取代OHSAS18001&#xff0c;成为全球工作场所健康与安全的参考。 ISO45001:201…

微信域名防封/QQ域名防封/域名状态检测/域名防红防封API平台源码

下载地址&#xff1a;API平台源码 这套源码是使用thinkphp3.1.3开发的&#xff0c;可以在PHP5.3-5.6下运行&#xff0c;程序是有一点老了&#xff0c;但是思路仍在&#xff01;然后&#xff0c;这套源码我已经成功搭建起来了&#xff0c;后台、个人&#xff08;用户&#xff0…

在瑞芯微RV1126 Linux系统上调试WiFi的详细指南

目录标题 1. **系统和环境准备**2. **检查WiFi设备状态**3. **启用和禁用WiFi接口**4. **扫描可用的WiFi网络**5. **连接到WiFi网络**6. **查看当前的WiFi连接状态**7. **断开和重新连接WiFi**8. **管理WiFi网络配置**9. **使用iw工具进行高级WiFi调试**10. **故障排除和日志获…

算法训练营day16

一、二叉树的最大深度 递归解法 后序遍历(DFS) class Solution {public int maxDepth(TreeNode root) {if (root null) return 0;return Math.max(maxDepth(root.left), maxDepth(root.right)) 1;} }算法解析&#xff1a; 终止条件&#xff1a; 当 root 为空&#xff0c;…

力扣---填充每个节点的下一个右侧节点指针 II

给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL 。 初始状态下&#xff0c;所有 next 指针都…

牛x之路 - Day1

Day1 微积分之屠龙宝刀&#xff08;武林秘籍&#xff09; 之前的一些东西都在pdf上记得笔记&#xff0c; 没有在这个上面展示一遍&#xff0c;只好学到相关内容的时候再提叙啦&#xff1b;所以其实再写这个小记的时候&#xff0c;我已经看了一半的书&#xff0c;但是不要紧&am…

IntelliJ IDEA运行发布传统Java Web Application项目

接 重温8年前项目部署 要求&#xff0c;如何改用IntelliJ IDEA运行发布传统 Java Web Application项目呢&#xff0c;简述步骤如下&#xff1a; 一、下载源码 源码&#xff1a;https://github.com/wysheng/kindergarten 下载后的本地项目路径&#xff1a;/Users/songjianyon…

《Python源码剖析》之对象的基石---PyObject

前言 在python的源代码中&#xff0c;PyObject的结构体定义如下&#xff0c;它的内容看起来很简单&#xff0c;只有3项&#xff0c;分别是&#xff1a;_PyObject_HEAD_EXTRA&#xff0c;ob_refcnt和ob_type&#xff0c;其中_PyObject_HEAD_EXTRA是用于指向活动堆的指针&#x…

学习大数据,所需要的linux基础(1)

文章目录 linux入门概述Linux和Windows的区别CentOS下载地址 Linux文件与目录结构Linux文件Linux目录结构 VI/VIM编辑器vi/vim是什么测试数据集准备一般模式编辑模式指令模式模式间转换 网络配置和系统管理操作查看网络IP和网关配置网络和ip地址ifconfig配置网络接口修改ip地址…