&      与  

两个运算数都为真时结果为真,只要有一个运算数为假结果就为假,否则就为真。

true & true = true  

true & false = false  

false & true = false  

false & false = false

|      或

只要有一个运算数为真,结果就为真,否则就为假。

true | true = true

true | false = true

false | true = true
false | false = false

!     非

原来为真,结果位假。原来为假,结果就为真。

! true = false

! false = true

^     异或

相同位假,不同为真。

true ^ true = false

true ^ false = true

false ^ true = true

false ^ false = false

下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假

操作符 描述 例子
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B)为假。
| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A && B)为真。

实例:

  1. public class Test {
  2. public static void main(String[] args) {
  3. boolean a = true;
  4. boolean b = false;
  5. System.out.println("a && b = " + (a&&b));
  6. System.out.println("a || b = " + (a||b) );
  7. System.out.println("!(a && b) = " + !(a && b));
  8. }
  9. }

运行结果:

  1. a && b = false
  2. a || b = true
  3. !(a && b) = true

注意(1):

  &&:如果前边的表达式的结果为false,则后边的表达式不再运算,整个表达式的结果就确定为false。

实例:

  1. public class YuHuo {
  2. public static void main(String[] args) {
  3. int a = 5;
  4. int b = 6;
  5. if(a++ < 4 && ++b == 7)
  6. System.out.println(a + " , " + b); // 不输出
  7. else
  8. System.out.println(a + " , " + b); // 输出结果为 6 ,6
  9. }
  10. }

上面例子说明: && 前面的算式进行了运算,&& 后面的的运算符没有进行运算。

注意(2):

  ||   :如果前边的表达式的结果为true,则后边的表达式就不再运算,整个表达式的结果就确定为true

实例:

  1. public class Huo {
  2. public static void main(String[] args) {
  3. int a = 5;
  4. int b = 6;
  5.  
  6. if(++a > 5 || ++b == 7)
  7. System.out.println(a + " , " + b); // 输出结果:6 , 6
  8.  
  9. }
  10. }

上面例子说明: || 前面的算式进行了运算,而 || 后面的算式没有进行运算。

注意(3):

  ||  如果在 && 的前边可以把 && 短路掉

实例:

  1. public class Huo {
  2. public static void main(String[] args) {
  3. int a = 5;
  4. int b = 6;
  5. int c = 7;
  6.  
  7. if(++a > 5 || ++b == 7 && ++c == 8 )
  8. System.out.println(a + " , " + b + " , " + c); // 输出结果:6 , 6 , 7
  9. }
  10. }

上面例子说明: || 前面算式进行了运算,||  后面的算式没有进行运算 。

注意(4):

  &&  如果在 || 的前边不能把 || 短路掉

实例:

  1. public class DuanLu {
  2. public static void main(String[] args) {
  3. int a = 5;
  4. int b = 6;
  5. int c = 7;
  6.  
  7. if(++a < 5 && ++b < 6 || ++c > 7)
  8. System.out.println(a + " , " + b + " , " + c); // 输出结果:6 , 6 , 8
  9. }
  10. }

上面的例子说明:++a 进行了运算,++b 被 && 短路,但是没有短路 || ,++c 进行了运算。

Java运算符 逻辑运算符 短路运算符的更多相关文章

  1. java入门---运算符&逻辑运算符&短路逻辑运算符&赋值运算符&条件运算符&instanceof 运算符

        这篇文章接着上次的来,主要看逻辑运算符&短路逻辑运算符&赋值运算符&条件运算符&instanceof 运算符这五种运算符.     首先来看逻辑运算符.下表列出 ...

  2. Python 位运算符 逻辑运算符 成员运算符

    位运算符 运算符 描述 实例 & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果12 ,二进制解释:0000 1100 | ...

  3. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  4. 【学习笔记】oracle 比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感

    比较运算符:> 大于,< 小于 >= 大于等于,<= 小于等于 = 等于,!=,<>,^= 不等于 逻辑运算符运算的优先顺序:NOT > AND > O ...

  5. Java短路运算符和非短路运算符

    在Java中短路运算符指的是"&&"(与) 和"||"(或) ,非短路运算符指的是"&" 和"|" ...

  6. -1-1 java 基础语法 java关键字 java 注释 常量 语句 运算符 函数 数组定义

    Java语言基础组成 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 关键字 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 用于定义数据类型的关键字 class ...

  7. Java 语言基础之运算符

    使用运算符之后,肯定有返回结果. 六种运算符: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三元运算符 1. 算术运算符 加(+), 减(-), 乘(*), 除(/), 取余(%), 自 ...

  8. 短路运算符(逻辑与&& 和 逻辑或||)

    首先我们来解释一下短路运算符: 短路运算符就是从左到右的运算中前者满足要求,就不再执行后者了: 可以理解为: &&为取假运算,从左到右依次判断,如果遇到一个假值,就返回假值,以后不再执 ...

  9. js之运算符其它运算符(三元运算符,逗号运算符,void运算符,typeof,delete运算符)

    Javascript支持很多其它的运算符,具体如下: 一.条件运算符(?:) 条件运算符是Javascript中唯一的三个操作数的三元运算符,有时会直接称做是“三元运算符”. 基本格式:conditi ...

随机推荐

  1. 记录一个bootstrap因js加载顺序导致的问题(tstrap-table-mobile.min.js:7 Uncaught TypeError: Cannot read property 'defaults' of undefined)

    问题描述: 网上找了会没看到答案,然后看了下源码,发现也没有问题,想到js加载的顺序,改了下,发现问题没了. 正确的顺序: 我之前把 <script src="/js/plugins/ ...

  2. 利用有道翻译Api实现英文翻译功能

    有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果.       通过调用有道翻译API数据接口,您可以在您的网站或应用中更灵活地定制翻译和查词功能. 第一步: ...

  3. MoreEffectiveC++Item35(操作符)(条款5-8)

    条款5 对定制的"类型转换函数"保持警惕 条款6 区别increment/decrement操作符的前值和后置形式 条款7 千万不要重载&&,||,和,操作符 条款 ...

  4. 用servlet来提取数据,并作统计,然后用jfreechart画图

    指定时间范围的数据提取,并做统计: 用servlet来提取数据,并作统计,然后用jfreechart画图. 使用的话,需要在web.xml里面配置相应的servlet,并且在index.jsp页面做引 ...

  5. PHP中 public、protected 和 privare的区别

    权限:public>protected>private public:谁都可以调用 protected:只有自己和派生类可以调用 privare:只有自己可以调用

  6. linux前奏

    1:选典型 2:选稍后自定义安装系统 3: 4: :5:弹出清单 二:装系统 下载linux的网址:https://mirrors.aliyun.com/centos/ 1: 2: 3: 2:如何修改 ...

  7. 【剑指offer】连续子数组的最大和,C++实现

    原创博文,转载请注明出处!本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 # 题目       输入一个整形数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求 ...

  8. 【数据处理】OneHotEncoder编码

    原创博文,转载请注明出处! # OneHotEncoder编码      OneHotEncoder编码称为"哑编码"或"独热编码",是将表示分类的数据扩维度, ...

  9. 【机器学习】集成学习之sklearn中的xgboost基本用法

    原创博文,转载请注明出处!本文代码的github地址    博客索引地址 1.数据集 数据集使用sklearn自带的手写数字识别数据集mnist,通过函数datasets导入.mnist共1797个样 ...

  10. Jmeter简单的操作数据库

    mysql驱动包下载地址: https://dev.mysql.com/downloads/connector/j/ 1.添加驱动配置,把下载下来的驱动配置上去 2.添加‘配置元件-用户定义的变量’, ...