【相关链接】
总纲:返回列表
【1】回顾
上节课我们讲了逻辑运算符,算术运算符,自增自减运算符,比较运算符这些,下面以表格形式给大家回顾下:
大家都学过数学运算,所以上面这些都比较简单,我相信大家应该都应该掌握了。
接下来我们一起接着去了解下:逻辑运算符、位运算符、三元运算符。理解这些相对于上面这些要绕点,不过也不难,大家跟着步伐,慢慢学习,也会明白的。
创建类 Test09
【2】逻辑运算符
所有逻辑运算的结果也会是一个布尔值,即 true(真) 和 false(假)。
(1)逻辑与 ( && )
这个理解就是我们日常生活里的 “并且” 的意思。
举个例:小明不但会游泳,并且还会滑冰。
那么就可以表示为:小明会游泳 && 小明会滑冰
他表示 && 符号连接的都是对的(true)时候,最后的结果才为 true。
所以 ( 小明会游泳 && 小明会滑冰 )这个结果是true,因为小明两个都会。
如果小明不会斗地主的话,( 小明会游泳 && 小明会斗地主 && 小明会斗地主)这个结果是false,因为小明最后一项不成立,只 && 连接的有一个不成立为false的话,这整个结果,都是不成立的(false)。
我们用代码来操作下:将下列代码拷贝到main方法中。
// 10 > 9, 成立,x = true
boolean x = (10 > 9);
// 10 > 11, 成立,y = true
boolean y = (10 < 11);
// 10 == 8, 不成立,y = false;
boolean z = (10 == 8);
// 逻辑与运算,求a
boolean a = (x && y);
// 逻辑与运算,求b
boolean b = (x && y && z);
// 输出a结果
System.out.println("a : " + a);
// 输出b结果
System.out.println("b : " + b);
执行代码,查看结果:
可以看到,最后 a 的结果是ture,b 的结果是 false。
为什么是这个结果,我们可以分析下:
我们不难看出,x = true, y = true, z = false;
那么 (x && y )就相当于 (ture && true),符号两边都是 true, 所以 a 最后的结果是 true.
同理 (x && y && z)相当于 (ture && true && false),符号连接的最后一个为 false,则整个运算结果为 false, 即 b 的结果为 false.
(2)逻辑或( || )
逻辑或就是两条竖线,他的意思和 && 有点对立的感觉,&& 是连接的所有条件成立,则最终结果成立; 而 || 的连接条件中,只要有一个成立,那么最终结果都是成立的。
我们回到上面的代码,把 && 改为 || 运行看看:
可以看出,此时不但 a 为true了,就连 b 也为true了。因为b中参与运算的三个条件中,虽然z不成立,但 x 和 y 都是成立的,只要存在一个成立则最终都成立,所以 b 的结果成立,即 true。
接下来我们试着修改下代码:
修改 x 和 y 两个数字间的比较运算符,将 x 和 y 则都不成立,我们执行结果:
可以看到,此时 a 和 b 都为 false 了,因为 a 和 b 中 连接的所有条件都为 false, 没有一个true, 所以最终结果只能是 false。
(3)逻辑非 ( ! )
逻辑非,简称取非,就是取相反的结果,他写在运算结果,即 !true 的结果是 false, !false的结果是true。
我们可以看下面这段代码:
因为 x 为 true, 那么x取非后则为false,所以y的结果是false.
【3】位运算符
位运算符这个是最绕的,并且在实际开发过程中,一般用得较少,这些通常用于算法研究运算,大家现在对算法以及计算机组成这些都可能接触不多,这里就不细讲了,就好比数学中的高等数学,只有等你上大学的时候才有机会用得到。
我们这里先讲常用的,所以位运算符先略过不讲,有兴趣的同学可以私自去搜下相关资料学习。
虽然不讲,但位运算符的定义和符号还是给大家罗列下:
【4】三目运算符
三目运算符他不是一个符号,二是一个固定的运算格式。
格式:条件表达式 ?值1 : 值2
解释:当条件表达式成立的时候,取值1为最终结果,当条件表达式不成立的时候,取值2位最终结果。
举个例子:如果明天不下雨,小明将去外婆家,否则就呆在家里。
那么我们就可以用三目运算符表示为 ( 明天不雨天 ?小明去外婆家 :小明呆在家里)
接下来,我们通过程序具体了解下:
下面这段代码如果运行,大家可以先做下 z 的结果是多少?
int x = 10;
int y = 8;
int z = (x > y ? 1 : 0);
System.out.println("z = " + z);
执行代码,结果如下所示,你是不是做对了呢!
解析:x > y 即 10 > 8,这是成立的,所以取第一个值 1,故而 z 的值为 1.
【相关链接】
总纲:返回列表