打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
谈谈java与js中的&&、& ||、|

java中的逻辑运算符主要逻辑非!、逻辑与&、逻辑或|、短路与&&、短路或||及逻辑异或^

javascript中逻辑运算符同样会有java中这些运算符,不过还是有些不同的。js中的逻辑与是java中短路与“&&”逻辑或是java中短路或“||”而java中逻辑与或在js中是按位运算的来计算的,而在java中则是根据表达式值的类型来判断是否为位运算。

下面来针对举例说明这些问题

首先,java逻辑与“&”与js“&”比较

这里在标题中已经说名了是逻辑与“&”运算,所以在写我们逻辑与运算两端的表达式时需要注意了。不要违反规则了,

规则:逻辑与“&”两端的表达式结果必须是逻辑值类型的也就是必须true或false。明白上面的规则之后,我们来看下面这例子:

java:

Java代码  
  1. System.out.println(1&2);//错误的写法,编译通过 输出结果?  
  2. System.out.println(1|2);//错误的写法,编译通过 输出结果?  
  3.   
  4. System.out.println(3>5&2<3);//false  
  5. System.out.println(1>0|2<0);//true  

 

js

Js代码  
  1. document.write((1&2)+"<Br>"); // 当然写法错误,但没有报错,并且同样有结果  
  2. document.write((1|2)+"<Br>"); //同上  
  3.   
  4.   
  5. document.write((1>2&2>1)+"<Br>"); //0  先计算关系表达式并进行位运算  
  6. document.write((1>0|2<1)+"<Br>"); //1  关系运算---->位运算  
  7.   
  8.   
  9. document.write((1>2&2)+"<Br>"); //0  关系运算---->位运算  
  10. document.write((1>0|1)+"<Br>"); //1 关系运算---->位运算  

 

 

在上面的例子中,在java中System.out.println(1>0|2);//写法不正确,编译通不过,所以这中情况不成立,在上面的举例中漏掉了这里补充上,“&”运算符通过上面代码及结果分析,我们大体对java与js使用逻辑与运算符的区别了吧,那么我们现在能知道在上面的java举例中那两个编译通过,但是写法符合逻辑运算的规则的结果了吗?答案:按位运算的结果

0或3。

因此,这里我们可以总结一下:在java中使用逻辑与“&”运算,如果运算符表达式两端符合逻辑运算规则,则就是按逻辑运算判断结果,true或false,而两端若是为数值类型的则是位运算,这时我们需通过进行二进制位运算来判断结果,一端为关系表达式一端为数值类型的数字不合法,编译出错。js中使用逻辑与“&”时 与java不同,它是把“&”一直作为位运算符来操作,并没有逻辑与的意思。而在js中它把逻辑值true当做1,false当做0,然后再进行位运算得出运算结果。

其次java中的逻辑或“|”与js中“|”基本和上面的一样,这里就不多描述了。

下面来看看java中短路与“&&”短路或“||”与js中所谓的逻辑与“&&”逻辑或“||”有什么不一样的地方

通过实例来总结:

java实例:

Java代码  
  1.           
  2.         System.out.println(1>0&&2<0);//false  
  3.         System.out.println(1>0||2>0);//true  
  4. //      System.out.println(1>0||2);//错误,编译不通过  
  5. //      System.out.println(1>0&&2);//错误,编译不通过  
  6. //      System.out.println(1&&2);//错误,编译不通过  
  7. //      System.out.println(1||2);//错误,编译不通过  

 js实例:

Java代码  
  1. document.write((1>2&&2>1)+"<Br>");//false  
  2. document.write((1>2||2>1)+"<Br>");//true  
  3. document.write((1>2&&2)+"<Br>");//false  
  4. document.write((1<2||2)+"<Br>");//true  
  5. document.write((1<2&&5)+"<Br>");//5  
  6. document.write((1>2||2)+"<Br>");//2  
  7. document.write((1&&5>3)+"<Br>");//true   
  8. document.write((8||1<2)+"<Br>");//8 短路运算,表达式一为true则不继续,结果返回表达式一的值  
  9. document.write((1<2||false)+"<Br>");//true  
  10. document.write((true&&5<3)+"<Br>");//false 只要有逻辑类型的值参与其中结果一定返回为逻辑true或false  

 

通过上面实例代码及结果分析,短路与“&&”短路或“||”在java中还是比较好掌握的,只要遵循其原则。而在js中则显得有些灵活不定,它将js中关系运算结果true为1,false为0,所以它跟其表达式两端类型的不同而得到不同逻辑类型或者数值类型的结果。所以在js中使用逻辑运算还是需要仔细认真去写的,因为js相对比较灵活,限制规则不是很严格,不注意写错了。或表达式不争确很容易造成结果的改变。

好了,以上就是我对逻辑与、或及短路与、或 位运算在java与js中总结。有什么地方不正确的,还希望大家多多指出,共同进步!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java的布尔类型基本介绍
JAVA中&&和&、||和|(短路与和逻辑与、短路或和逻辑或)的区别
Java基础运算符
java与.net比较学习系列(4) 运算符和表达式
学了一天java,我总结了这些知识点
在Java中各种类型运算符的介绍与其基本使用方式(有具体使用示例)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服