`
supportopensource
  • 浏览: 521857 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

逻辑运算符中的“短路”与“非短路”

 
阅读更多
短路:在逻辑表达式中,如果能通过逻辑运算符左边表达式的值就能推算出整个表达式的值,那么将不再继续执行逻辑运算符右边的表达式。(&&,||)
非短路:始终执行逻辑表达式两边的表达式。(&,|)
例如:
public class Test2{
	public static void main(String args[]){
		int a = 1;
		int b = 2;
		boolean result = ((a = 9+3)<10)&&((b = 8-3)>4);
		//boolean result = ((a = 9+3)<10)&((b = 8-3)>4);
		System.out.println("result="+result);
		System.out.println("a="+a);
		System.out.println("b="+b);
	}
}

运行结果如下:
result=false
a=12
b=2
然后注释掉boolean result = ((a = 9+3)<10)&&((b = 8-3)>4);,运行boolean result = ((a = 9+3)<10)&((b = 8-3)>4);的结果如下:
result=false
a=12
b=5
在实际应用时,更多的应用“短路”逻辑运算符,因为使用“短路”运算符算在一些情况下只需计算其中一个表达式的值就可得到整个表达式的结果,缩短了执行时间,提高了执行速度。例如“True||(45328/45+3455.33)>(99*23+98.12)”,已知道左边的值为True,则整个表达式的值为True,因此不需要执行右边的表达式。
使用“短路”逻辑运算符有助于提高程序代码的安全性,例如判断用户是否输入了数值,可通过如下编码:
String name = null;
//判断name不等于null并且不等于空,当name等于null时,不会执行name.equals("")方法
if(name!=null&&!name.equals(""))
	System.out.println("用户名:"+name);
else
	System.out.println("请输入用户名!");

运行结果如下:
请输入用户名!
如果使用“非短路”逻辑运算符与运算符“&”进行判断:
String name = null;
//判断name不等于null并且不等于空,当name等于null时,还会执行name.equals("")方法
if(name!=null&!name.equals(""))
	System.out.println("用户名:"+name);
else
	System.out.println("请输入用户名!");

则会抛出java.lang.NullPointerException空指针异常。因为name没有引用任何对象,所以name.equals("")将抛出异常错误。
分享到:
评论

相关推荐

    34.java短路逻辑运算符.zip

    34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip34.java短路逻辑运算符.zip...

    Java 短路运算符和非短路运算符详解

    Java 语言中有两种类型的逻辑运算符:短路运算符和非短路运算符。短路运算符包括“&&”和“||”,它们在逻辑表达式中使用,具有短路特性,即如果第一个表达式的结果已经确定了整个表达式的结果,那么就不再执行后续...

    C语言中的逻辑运算符

    逻辑运算符包括逻辑与(&&)、逻辑或(||)、逻辑非(!)。这些运算符根据其功能和运算规则,在表达式中的优先级和结合性各异。下面详细阐述C语言中逻辑运算符的分类、优先级以及它们的使用。 首先,C语言的运算符...

    计算机后端-PHP视频教程. php与mysql加强- 05. php加强53-进逻辑运算符的短路特性.wmv

    计算机后端-PHP视频教程. php与mysql加强- 05. php加强53-进逻辑运算符的短路特性.wmv

    Java中短路与和与,短路或和或逻辑运算符区别.pdf

    在Java编程语言中,逻辑运算符是用于组合布尔表达式的关键工具,它们帮助开发者基于一组条件来决定程序的流程。本文将深入探讨两种类型的“与”运算符(&&和&)以及两种类型的“或”运算符(||和|),并阐述它们之间...

    在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

    在编程语言中,逻辑运算符是用来处理布尔值(True 或 False)的运算,它们在决策结构如 if 语句中起到关键作用。本篇将详细阐述逻辑运算的真值表、if 语句的多种形式以及 if 语句的嵌套和 switch 语句的使用。 首先...

    逻辑运算符

    逻辑运算符可以分为两大类:短路逻辑运算符和非短路逻辑运算符。 一、短路逻辑运算符 短路逻辑运算符包括 && 和 || 两个运算符。它们的特点是,如果第一个操作数的结果可以确定整个表达式的结果,那么就不会执行第...

    8.3 逻辑运算符.7z

    9. **位运算符**:在一些低级别的编程或特定场景下,逻辑运算符还与位操作结合使用,如位与(&)、位或(|)和位非(~)。这些运算符在处理二进制数据时非常有用。 10. **在函数参数中的应用**:逻辑运算符可以作为...

    java 逻辑运算符的资源

    7. **逻辑运算符与三元运算符结合**:在Java中,逻辑运算符还可以与三元运算符结合,简化代码: ```java boolean condition = true; int result = condition ? 1 : 0; // 如果condition为true,result为1;否则为...

    第02章 Java编程基础 07 逻辑运算符与示例

    在Java编程语言中,逻辑运算符是用于处理布尔值(true或false)的关键工具,它们在构建复杂的条件语句和控制程序流程时起着至关重要的作用。本章将深入探讨Java中的逻辑运算符及其用法。 一、逻辑运算符类型 1. ...

    JS逻辑运算符短路操作实例分析

    本文实例分析了JS逻辑运算符短路操作。分享给大家供大家参考,具体如下: js逻辑运算符有三个:逻辑非!、逻辑与&&、逻辑或||。 所谓短路操作就是,当&&的第一个操作数的值是false时,直接返回第一个操作数的值,不再...

    大数据必学Java基础(十七):关系运算符和逻辑运算符

    逻辑运算符包括:逻辑与(&)、逻辑或(|)、逻辑非(!)、逻辑异或(^)等。 在Java中,逻辑运算符的使用非常重要,如判断多个条件是否同时满足、判断某个条件是否满足等。在编程中,逻辑运算符经常与关系运算符...

    c语言之逻辑运算符共2页.pdf.zip

    在这个“c语言之逻辑运算符共2页.pdf.zip”的压缩包中,虽然没有提供具体内容,但我们可以根据主题推测它可能涵盖了C语言中的逻辑与(&&)、逻辑或(||)以及逻辑非(!)这三个主要的逻辑运算符。 1. **逻辑与(&&)**: ...

    结合短路法和逗号表达式,代替if和三目运算符

    短路法的原理是利用逻辑运算符的短路特性。在C/C++语言中,逻辑与运算符(&&)和逻辑或运算符(||)都具有短路特性。对于逻辑与运算符(&&)来说,只有当其左右两边的表达式都为真时,整个表达式的结果才为真。因此,如果...

    Java程序设计基础:逻辑运算符.pptx

    短路与 a、b全为true时,计算结果为true,否则为false。 2&gt;1&&3 true || a||b 短路或 a、b全为false时,计算结果为 false,否则为true。 2||3&gt;4 false & a&b 逻辑与 a、b全为true时,计算结果为true,否则为false。 ...

    章节2:编程基本概念之21:布尔值本质-逻辑运算符-位运算符-比较运算符-短路问题.rar

    python入门

    12.java逻辑运算符.zip

    在本资料中,我们将深入探讨Java中的逻辑运算符,包括逻辑与(&&), 逻辑或(||), 逻辑非(!)以及短路逻辑。 首先,我们来了解逻辑与(&&)运算符。此运算符用于连接两个布尔表达式,只有当两个表达式都为真时,结果才为...

    LINGO具有9种逻辑运算符.zip_lingo

    不过,可以通过组合其他运算符达到类似效果,如 `(A & B) | (A & ~B)` 实现短路与,`(A | B) & (A | ~B)` 实现短路或。 9. **嵌套逻辑运算**: 在LINGO中,可以将这些逻辑运算符结合使用,构建更复杂的逻辑表达式。...

    20121020_C++短路求值(逻辑与、逻辑或)1

    以下是利用逻辑运算符短路特性的两种解决方案: - **使用逻辑或短路:** ```cpp bool tmp = ((result = a*b) ) || (result=255); ``` 如果`a*b`的值小于255,`result`保持原值,否则`result`被赋值为255。由于...

Global site tag (gtag.js) - Google Analytics