不起眼但是很要命的Java小细节

您所在的位置:网站首页 java短路与短路或 不起眼但是很要命的Java小细节

不起眼但是很要命的Java小细节

2024-05-10 01:54| 来源: 网络整理| 查看: 265

在实际开发时,开发者常常会更偏爱或者说默认仅仅使用短路与,短路或。 一般情况下是不会有问题的,但是在某些场景下,会因为开发者遗忘的短路语法细节导致程序走向不符合预期的流程。

基础语法 &&(短路与)与 &(非短路与)的区别: 最终结果都是一样的 && : 具有短路的效果。左边是false,右边直接就不执行 &: 不具有短路的效果。不管左边啥情况,右边都会执行 int x1 = 3; int y1 = 4; System.out.println( (++x1 == 3) & (++y1 == 4)); //false & false = false 右侧一定会执行 System.out.println("x1 = " + x1); //x1 = 4 System.out.println("y1 = " + y1); //y1 = 5 int x2 = 3; int y2 = 4; System.out.println((++x2 == 3) && (++y2 == 4)); //false (&& 右侧不执行) = false System.out.println("x2 = " + x2); //x2 = 4 System.out.println("y2 = " + y2); //y2 = 4 ||(短路或)与|(非短路或)的区别: 最终的效果都是一样的 ||: 具有短路的效果。左边为true,右边直接不执行 |: 不具有短路的效果。不管左边啥情况,右边都会执行 int x1 = 3; int y1 = 4; System.out.println((++x1 == 4) | (++y1 == 4)); //true & false = false 右侧必须执行 System.out.println("x1 = " + x1); //x1 = 4 System.out.println("y1= " + y1); //y1 = 5 int x2 = 3; int y2 = 4; System.out.println((++x2 == 4) || (++y2 == 4)); //true (|| 右侧不执行) = true System.out.println("x2 = " + x2); //x2 = 4 System.out.println("y3 = " + y2); //y2 = 4

说明: 在应用与、或条件时,一定要考虑右侧的表达式是否一定要执行。 如果强制要求右侧一定要执行,则用非短路的逻辑运算符。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3