`
lzh166
  • 浏览: 293994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

谈谈java与js中的&&、& ||、|

阅读更多

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

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

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

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

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

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

java:

System.out.println(1&2);//错误的写法,编译通过 输出结果?
System.out.println(1|2);//错误的写法,编译通过 输出结果?

System.out.println(3>5&2<3);//false
System.out.println(1>0|2<0);//true

 

js

document.write((1&2)+"<Br>"); // 当然写法错误,但没有报错,并且同样有结果
document.write((1|2)+"<Br>"); //同上


document.write((1>2&2>1)+"<Br>"); //0  先计算关系表达式并进行位运算
document.write((1>0|2<1)+"<Br>"); //1  关系运算---->位运算


document.write((1>2&2)+"<Br>"); //0  关系运算---->位运算
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实例:

		
		System.out.println(1>0&&2<0);//false
		System.out.println(1>0||2>0);//true
//		System.out.println(1>0||2);//错误,编译不通过
//		System.out.println(1>0&&2);//错误,编译不通过
//		System.out.println(1&&2);//错误,编译不通过
//		System.out.println(1||2);//错误,编译不通过

 js实例:

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

 

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

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

分享到:
评论

相关推荐

    Java面试宝典2020修订版V1.0.1.doc

    25、JAVA中Object类中有哪些常用方法? 19 26、heap和stack有什么区别。 19 27、GC是什么? 为什么要有GC? 20 28、什么是内部类?分为哪几种? 20 29、为什么需要内部类? 20 30、内部类可以引用它的包含类的成员吗?...

    Java面试宝典-经典

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2010版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    java面试题大全(2012版)

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    java面试宝典

    187、JAVA SERVLET API中forward() 与redirect()的区别? 44 189、Can a Java Thread be started from Servlet class, and what will be the implications? 45 190、What is ...

    java面试要点集合

    里面包含多个知名公司的面试题目,而且覆盖了ssh、数据库、java基础、js框架的各方面的面试题,总共四十一份 神舟航天软件公司 1、xml解析方式 2、ejb几种类型 3、String和StringBuffer区别 4、jsp有哪些动作标记 5...

    最新Java面试宝典pdf版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试笔试资料大全

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    java面试宝典2012

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 67 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    JAVA面试宝典2010

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2012新版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2012版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到...

    2013java面试题搜集

    4、Javascript中怎么实现继承?有几种方式? 5、spring底层用什么实现? 6、hibernate和Jdbc的区别 7、Hibernate与Ibatis的区别 8、Struts2和1的区别 9、Struts2的执行机制 10、ConnectionPool的底层,不是问...

    谈谈JavaScript中function多重理解

    JavaScript 中的 function 有多重意义。它可能是一个构造器(constructor),承担起对象模板的作用; 可能是对象的方法(method),负责向对象发送消息。还可能是函数,没错是函数,和对象没有任何关系独立存在的...

    用JavaScript编写Java虚拟机?谈谈哗众取宠的BicaVM

    目睹某网络新闻,开篇明义便包含如下几行文字【程序员Artur Ventura,这位超级大牛,用JavaScript写了一个java虚拟机BicaVM】 继而再读,惊见其中“超级大牛”、“神人”等溢美之词不绝于耳,崇拜、神往之心...

    史上最详细的【一线大厂面试题】详解及其答案

    目录: 1、前端 2、JavaSE 3、mysql数据库 4、springboot 5、缓存 更详细目录(子目录): 1、前端目录 ①如何避免CDN为PC端缓存移动端页面 ...16、java中实现多态的机制 17、string常量池和intern

Global site tag (gtag.js) - Google Analytics