逻辑运算符:
概述:就是用于连接结果是boolean类型的表达式的。
表达式:由运算符连接起来的式子。(由变量或者常量组成)
&:逻辑与。并且。有假则假。
|:逻辑或。或者。有真则真。
!:逻辑非。以前为假,现在为真,以前为真,现在为假。正对同一个表达式来操作的。
^:逻辑异或。 相同为假,不同为真。
&&:短路与 前边如果出现了false,后边将不再执行。
||:短路或 前边如果出现了true,后边将不再执行。
&&跟&的区别:
&&是短路与,&是逻辑与。他们的特点都是有假则假。但是,
短路与的时候,前边的表达式如果出现了false,后边将不再执行。
逻辑与的时候,所有的表达式都会执行。
开发常用:
&&,||,!
位运算符:
概述:就是用来计算二进制数据的(可以把0看做false,1看做是true)。
&:按位与 有0则0。
|: 按位或 有1则1。
^: 按位异或 相同为0,不同为1.
~: 按位取反 针对所有的二进制位,1变0,0变1。
结果其实相当于该值+1,然后取反。
00001010 10 按位取反:-11
1、求它的原码00001010,
2、求它的反码00001010,
3、求他的补码00001010。
4、针对第3步的补码,进行取反操作。11110101
5、把第四步得到的结果作为补码再来运算,求出它的反码:11110100。
6、求第5步的原码。
11110100
10001011
<<:左移。最高位舍弃,右边的空缺位用0补齐。
>>:右移。看最高位是0,还是1,如果是0,空缺位就用0补齐,如果是1,空缺位就用1补齐。
>>>:无符号右移。 不管最高位是0还是1,空缺位都用0补齐。
总结:
向左移动(增大)或者向右移动(减小),就是增大或者减小2的指定次幂。
思考:
1、请用高效的形式写出:2*8 2<<3
2、交换两个变量。
int a = 10;
int b = 20;
第一种做法:用第三方变量来做。(开发用)
int temp = a;
a = b;
b = temp;
第二种做法:用位异或来做。(面试用)
特点:一个数据对同一个数据位异或两次,值不变。
a = a^b; //a=a^b b的值不发生变化
b = a^b; //b= a^b^b b=a,a=a^b
a = a^b; // a= a^b^a a=b;
第三种做法:
仅适用于基本类型(boolean类型除外)。
用算术运算符。
a = a + b; //a=30,b=20
b = a - b; //a=30,b=10,
a = a - b; //a=20,b=10
条件运算符:
格式:
条件表达式?表达式1:表达式2;
注意:
条件表达式的结果必须为boolean类型。
执行顺序:
如果条件表达式的结果是true,就执行表达式1,
如果天健表示的结果是false,就执行表达式2。
int y = 10;
int x = y>5?'a':20;
思考:
表达式1和表达式2的数据类型必须一样吗?
不一定。只要包含隐式类型转换就可以。
推荐:一般写同样的数据类型。
Java中的流程控制语句(结构)
1、顺序结构:代码是从上往下,从左往右依次逐行来执行的。
2、选择结构:根据给定的判断或者选择语句从而来决定执行顺序.
A:判断语句
if
B:选择语句
switch-case
3、循环结构:就是重复的做某件事情。
if语句的第一种形式:
if(条件表达式)
{
语句体;
} |
|