how2j.cn


工具版本兼容问题
逻辑运算符

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



8分45秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



关键字 简介 示例代码
&
&&
长路与 和 短路与
示例代码
|
||
长路或 和 短路或
示例代码
!
取反
示例代码
^
异或^
示例代码
练习-逻辑操作符
示例代码
答案-逻辑操作符
示例代码
示例 1 : 长路与 和 短路与   
示例 2 : 长路或 和 短路或   
示例 3 : 取反   
示例 4 : 异或^   
示例 5 : 练习-逻辑操作符   
示例 6 : 答案-逻辑操作符   

示例 1 :

长路与 和 短路与

无论长路与还是短路与
两边的运算单元都是布尔值
都为真时,才为真
任意为假,就为假
区别
长路与 两侧,都会被运算
短路与 只要第一个是false,第二个就不进行运算了
长路与 和 短路与
public class HelloWorld { public static void main(String[] args) { //长路与 无论第一个表达式的值是true或者false,第二个的值,都会被运算 int i = 2; System.out.println( i== 1 & i++ ==2 ); //无论如何i++都会被执行,所以i的值变成了3 System.out.println(i); //短路与 只要第一个表达式的值是false的,第二个表达式的值,就不需要进行运算了 int j = 2; System.out.println( j== 1 && j++ ==2 ); //因为j==1返回false,所以右边的j++就没有执行了,所以j的值,还是2 System.out.println(j); } }
public class HelloWorld {
	public static void main(String[] args) {
		//长路与  无论第一个表达式的值是true或者false,第二个的值,都会被运算
		int i = 2;
		System.out.println( i== 1 & i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
		System.out.println(i);
		
		//短路与 只要第一个表达式的值是false的,第二个表达式的值,就不需要进行运算了
		int j = 2;
		System.out.println( j== 1 && j++ ==2  );  //因为j==1返回false,所以右边的j++就没有执行了,所以j的值,还是2
		System.out.println(j);		
		
	}
}
示例 2 :

长路或 和 短路或

无论长路或还是短路或
两边的运算单元都是布尔值
都为假时,才为假
任意为真,就为真
区别
长路或 两侧都会被运算
短路或 只要第一个是true的,第二个就不进行运算了
长路或 和 短路或
public class HelloWorld { public static void main(String[] args) { //长路或 无论第一个表达式的值是true或者false,第二个的值,都会被运算 int i = 2; System.out.println( i== 1 | i++ ==2 ); //无论如何i++都会被执行,所以i的值变成了3 System.out.println(i); //短路或 只要第一个表达式的值是true的,第二个表达式的值,就不需要进行运算了 int j = 2; System.out.println( j== 2 || j++ ==2 ); //因为j==2返回true,所以右边的j++就没有执行了,所以j的值,还是2 System.out.println(j); } }
public class HelloWorld {
	public static void main(String[] args) {
		//长路或  无论第一个表达式的值是true或者false,第二个的值,都会被运算
		int i = 2;
		System.out.println( i== 1 | i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
		System.out.println(i);
		
		//短路或 只要第一个表达式的值是true的,第二个表达式的值,就不需要进行运算了
		int j = 2;
		System.out.println( j== 2 || j++ ==2  );  //因为j==2返回true,所以右边的j++就没有执行了,所以j的值,还是2
		System.out.println(j);		
		
	}
}
示例 3 :

取反

取反!
真变为假
假变为真
public class HelloWorld { public static void main(String[] args) { boolean b = true; System.out.println(b); //输出true System.out.println(!b);//输出false } }
public class HelloWorld {
	public static void main(String[] args) {
		boolean b = true;
		
		System.out.println(b); //输出true
		System.out.println(!b);//输出false
		
	}
}
示例 4 :

异或^

异或^
不同,返回真
相同,返回假
异或^
public class HelloWorld { public static void main(String[] args) { boolean a = true; boolean b = false; System.out.println(a^b); //不同返回真 System.out.println(a^!b); //相同返回假 } }
public class HelloWorld {
	public static void main(String[] args) {
		boolean a = true;
		boolean b = false;
		
		System.out.println(a^b); //不同返回真
		System.out.println(a^!b); //相同返回假

	}
}
示例 5 :

练习-逻辑操作符

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势

int i = 1;
boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);
System.out.println(b);
System.out.println(i);


输出结果是?

心算! 不要丢到ecilpse里面去看结果
示例 6 :

答案-逻辑操作符

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

2分29秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


答案-逻辑操作符
public class HelloWorld { public static void main(String[] args) { int i = 1; boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3); //i值 2 3 //表达式 false true // true ^ true // false System.out.println(b); System.out.println(i); } }
public class HelloWorld {
    public static void main(String[] args) {
    	int i = 1;
    	boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);
    	//i值			2			3
    	//表达式			false		true
    	//				true	^	true
    	//						false	
    	
    	System.out.println(b);
    	System.out.println(i);
    }
}


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-12-03 小疑问
望舒羲和
老师我想问下,第一个括号里i ++ ==3 为false 是因为返回值是1 1不等于3 才false 的吧。




1 个答案

娶一个昵称 答案时间:2018-12-04
你说得没错




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-11-25 个人答案解析
我是一只猪
int i = 1; boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3); 1) 括号优先级最高。 所以 b = !(false) ^ (false) && (false); 2) 取反优先级第二。 所以b= (true)^(false) && (false); 虽然(i++ == 3)为false但经过取反为true,因此此时i =3; 3)异或优先级为9,不同反真,所以 b = (true) &&(false)短路与第一个表达为true,所以第二个表达式继续运算。 此时i = 3,(i++ ==3)经运算后,i 任然为 3. 所以最后 i = 3 4) 短路与任意假就为假,所以 b = false;




1 个答案

JamieSu 答案时间:2018-12-13
boolean b = !(i++ == 3) ^ (i++ ==2) && (i++ ==3); i为1 false。 I为2 true。 I为3 true b = ! false ^ true && true b = true ^ true && true b = false && true b = false 最后i=3




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-11-25 一个低级问题
2018-11-24 答案解析
2018-11-14 交作业
2018-10-30 我觉得这里应该考虑到优先级问题了!!!
2018-10-17 交作业
2018-09-30 交作业
2018-09-06 [分享]JAVA运算符优先级
2018-09-03 交作业//也算是做笔记吧
2018-09-02 有个小问题
2018-08-30 练习题
2018-08-05 练习
2018-07-25 答案
2018-07-20 作业汇报
2018-07-19 交作业
2018-07-17 交作业
2018-07-10 为什么视频里面 i++ == 3时说 2==3是错的,此时i值为2,但是到了 i++ == 2时说 2==2是正确的,此时i值为3. 难道i++ == 3那个不应该是说1==3是错的吗??
2018-05-03 关于i++与++i的理解
2018-03-30 交作业-练习逻辑操作符
2018-03-28 运算优先级
2018-03-05 练习-逻辑操作符
2018-01-09 表述的不太清楚吧
2018-01-09 请问下这些运算符有优先级分别吗?
2017-12-13 两个整数异或得出整数和
2017-12-13 两个整数取反怎么得出整数和?
2017-10-19 短路或和长路或对应的符号写反了
2017-04-12 关于长路与中i的值
2016-10-11 想要最后一道练习题的心算过程
2016-07-26 优先级




提问之前请登陆
关于 JAVA 基础-操作符-逻辑操作符 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图