位运算符
<< 左移 5<<2 =20—>也就是5*2的平方=20
>> 右移 5>>1=2–>5/2^1 = 2
>>>无符号右移 5>>>1 = 2 --> 5 /2 = 2
& 与运算(只要有一个为0,运算结果就为0,否则为1) 5 & 3 =1
| 或运算(只要有一个为1,运算结果就为1,否则为0) 5 | 3 = 7
^ 异或运算 (XOR 同为0 、异为1 如果两个数值一样,运算结果为0、如果两个数值不一样、运算结果就为1) 5 ^ 3 =6
~ 取反运算 (了解) 6 --> 0110 = -7
备注:位运算计算机底层采用的是对整数进行二进制运算.
【没有无符号左移位运算符】
当两个二进制的位数不一致时,在短的那一方高位补0
二进制整数表示:原码、反码、补码
--------------------------------------------------------
三目运算符:
?:
三目运算符格式:
布尔类型表达式 ? 真的结果值 : 假的结果值
三目运算符格式:
变量的数据类型 变量名 = 布尔类型表达式 ? 真的结果值 : 假的结果值
计算方式:
如果布尔类型表达式结果是true、三目运算符运算的结果为紧邻?后面的值;
如果布尔乐行表达式结果是false、三目运算符运算的结果为紧邻:后面的值
备注:当三目运算符运算参与有其他的运算(赋值运算)、要求三目运算符中的?和:后面的值的【数据类型保持一致】
if语句和三目运算符的互换
int num01 = 10;
int num02 = 20;
//定义一个变量,保存num01和num02的最大值
int c;
if(num01 > num02){
c = num01;
}else{
c = num02;
}
//上面的语句我们也可以使用三目运算符
c = num01 > num02 ? num01 : num02;
switch case语句**
switch(表达式){
case 常量值1:
//语句体内容1
break;
case 常量值2:
//语句体内容2
break;
…
default:
//语句体n
break;
}
执行流程:
- 首先计算出表达式中的值
-
其次,依次和case后面的常量值作比较,一旦有对应的值,就会执行相应的语句体内容,
在执行的过程中,遇到break就会结束switch case语句。
-
最后,如果所有的case都和表达式的值不匹配,那么就会执行default中的语句体内容
注意:switch语句中,表达式的数据类型,可以是byte/short/int/char/enum(枚举),JDK1.7之后可以接受字符串类型。
case穿透性
在switch语句,如果case后面的break省略掉,将会出现穿透现象不会判断后面的case情形值,直接加载后面的case中的方法体内容,直到遇到break结束。
循环结构【重点】
【三种基本循环】for、while、do-while
循环结构组成部分:一般可以分成四部分
-
初始化语句:在循环最初开始时,需要定义一个初始化的变量,而且只会定义一次。
-
条件判断(结束条件):如果条件成立满足,进入循环,如果条件不满足,则退出循环
-
循环体内容:重复要做的事情内容,可能包含很多条语句(事情是有规律的)
-
迭代语句(步进语句):每次循环结束之后需要执行步进语句(迭代语句),对初始化的变量做步进(迭代)。