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-01-09 表述的不太清楚吧
dengj
int i = 2; System.out.println( i== 1 & i++ == 2 ); System.out.println("i" + i); int j = 2; System.out.println( j == 1 && j++ == 2 ); System.out.println("j" + j); 用同樣的例子比較才能看出來:此時i=3,j=2,説明&不論怎麽樣&號兩邊都執行,&&遇到可以判斷的時候就會停止。








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




2018-01-09 请问下这些运算符有优先级分别吗?
peipeiChan
比如练手题中 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); } } 括号中先进行 然后!取反是在最后进行还是先进行








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




2017-12-13 两个整数异或得出整数和
2017-12-13 两个整数取反怎么得出整数和?
2017-10-19 短路或和长路或对应的符号写反了
2017-04-12 关于长路与中i的值
2016-10-11 想要最后一道练习题的心算过程
2016-07-26 优先级




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

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图