java逻辑运算和位运算

wwwrrrmmm 2016-08-16 12:07:52
超级简单的问题,& &&的不同。
一个同事去面试,考官出了这样一道题,把&放在了if 里面。
同事拿出来问,一个高大上的伙计说,&放在if里面是错误的。错误的!
因为&是位判断,不是逻辑判断,写if(xxx & xxxx) 是错误的!!!

我告诉他们在java里面下面这两个功能完全一样。然后这位同事就说出了“从意义上来说不一样”这么高大上的话。
if(a>1&b<5)
if(a>1&&b<5)
瞬间我就认输了。高大上的意义。不想深究,认输走人。

然后他还说,使用&在if里面是因为可以用true false来做位运算。说什么true is 1 false is 0之类的啪啪啪。
然后就是
从“意义”上说是错 但编译不错
之类的。

然而我想说没说出来的就是。你丫的在if里面了还不算逻辑判断阿?
...全文
347 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_08_06_02 2016-08-16
  • 打赏
  • 举报
回复
HerveyHall 2016-08-16
  • 打赏
  • 举报
回复
引用 4 楼 NewMoons 的回复:
这种问题多年前遇到过 首先在if语句里2者的共同点都是逻辑与的判断,即所有条件成立才执行if包含的逻辑。 真正的区别如下: 1、if(条件A & 条件B) 不论条件A是否成立,条件B的代码都会执行。 1、if(条件A && 条件B) 如果条件A不成立,条件B的代码不会执行。 这个区别还是很重要的,至少&的效率会高些。 至于到底选哪个合适,根据具体场合来决定吧,毕竟有的场合是需要条件B执行的。
学习了
HerveyHall 2016-08-16
  • 打赏
  • 举报
回复
引用 3 楼 wwwrrrmmm 的回复:
这个市什么意思哦&&、||只能操作两个boolean类型的量 我可以写a&&b&&c&&d
我的意思是连接两个布尔值,你可以把a&&b看做一个布尔值,以此类推
NewMoons 2016-08-16
  • 打赏
  • 举报
回复
上面有句话口误,应该是【至少 && 的效率会高些】 下面的代码可验证上面的结论:
int i = 0;
		int j = 10;
		
		if (++i > 100 & ++j > 100) {
			
		}
		System.out.println(j);
		
		j = 10;
		if (++i > 100 && ++j > 100) {
			
		}

		System.out.println(j);
NewMoons 2016-08-16
  • 打赏
  • 举报
回复
这种问题多年前遇到过 首先在if语句里2者的共同点都是逻辑与的判断,即所有条件成立才执行if包含的逻辑。 真正的区别如下: 1、if(条件A & 条件B) 不论条件A是否成立,条件B的代码都会执行。 1、if(条件A && 条件B) 如果条件A不成立,条件B的代码不会执行。 这个区别还是很重要的,至少&的效率会高些。 至于到底选哪个合适,根据具体场合来决定吧,毕竟有的场合是需要条件B执行的。
wwwrrrmmm 2016-08-16
  • 打赏
  • 举报
回复
引用 2 楼 hhv_01 的回复:
虽然两者意义不一样,但是&&、||只能操作两个boolean类型的量,那么&&和||是不是可以完全被&和|取代呢?
这个市什么意思哦&&、||只能操作两个boolean类型的量 我可以写a&&b&&c&&d
HerveyHall 2016-08-16
  • 打赏
  • 举报
回复
虽然两者意义不一样,但是&&、||只能操作两个boolean类型的量,那么&&和||是不是可以完全被&和|取代呢?
树成 2016-08-16
  • 打赏
  • 举报
回复
& 和&&怎么可能一样。 &的是位运算 &&是逻辑运算,概念是不一样 不过true和false 的这种运算,编译器会把它变成逻辑运算。
它通过读取 Excel 表格中的业务数据,结合 Word 模板,自动生成多个独立的合同文件,并自动处理了表格中“合计”行的合并与中文大写金额转换。 资源名称:合同文档自动化生成脚本 (1.py) 名字真是乱起 核心功能:Excel 数据读取 → Word 模板渲染 → 表格单元格合并与金额处理 → 批量导出 Word 文档。 适用场景:财务、销售或行政部门需要根据订单或业务明细,批量制作格式统一的合同、报价单或结算单。 1. 自动把“钱”变成“大写” 它干了啥:它内置了一个翻译功能,专门把阿拉伯数字(比如 100.50)自动转换成财务专用的中文大写(比如 壹佰元伍角)。 为什么有用:写合同最怕手滑写错金额,或者大写格式不对。这个功能全自动搞定,既标准又不会出错。 2. 自动“装修”表格底部 它干了啥:生成文档后,它会自动找到表格的最后一行,把前几列合并成一个大格子,写上“合计:XXX(大写金额)”,并在最右边填上具体的数字总额。 为什么有用:平时我们做完表格,还得手动去合并单元格、算总数、填大写,非常繁琐。这个脚本直接一步到位,把表格收尾工作做得漂漂亮亮。 3. 像“发传单”一样批量做合同 它干了啥:它会看你的 Excel 表格,按照“编号”把数据归类。 如果是同一个编号的货物,它会把它们塞进同一个合同里(比如一个客户买了三样东西,会自动列三行)。 如果是不同的编号,它就生成不同的合同文件。 为什么有用:不管你有一百个还是一千个订单,它都能自动拆分,给每个客户生成一份独立的、内容准确的合同,完全不用人工去复制粘贴。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧