1.对昨天补充:
①一个数对另一个数异或两次,该数本身不变
实现两个整数变量的交换(不适用第三方变量的情况):
(1):x=x+y; (不利:有可能超出int 取值范围) (2):x=x^y;
y=x-y; y=x^y;
x=x-y; x=x^y;
②<<:左移 左边超出的高位就丢弃了,右边用0补齐——乘以2的几次幂
>> : 右移 右边超出的低位丢弃,高位是0,用0补齐;高位是1,用1补齐——除以2的几次幂
>>> : 无符号右移 无论高位是0还是1,左边高位都用0补齐
2.三元运算符(运算符都代表有结果)
关系表达式?表达式1:表达式2;
——关系表达式结果是boolean类型,如果是true,就执行并返回表达式1;是false,就执行并返回表达式2
3.流程控制语句——可以控制程序的执行流程
分类:顺序结构 选择结构 循环结构
(1)顺序结构:从上往下,依次执行
(2)选择结构:if语句 switch语句
①if语句:
格式1: if(比较表达式){ //比较表达式返回的是boolean类型,如果是true
语句体(内容); //就执行语句体;如果是false,就不执行语句
}
格式2: if(比较表达式){ //比较表达式返回的是boolean类型,如果是true
语句体1(内容); //就执行语句体1;如果是false,就执行语句体2
}else{
语句体2(内容);
}
格式3: if(比较表达式1){ //先进行比较表达式1,如果满足(true)就执行语句体1;
语句体1(内容); //if语句结束;
}else if(比较表达式2){ //表达式1不满足;就尝试表达式2;满足就执行语句体2
语句体2(内容); //并且if语句结束;如果不满足就向下尝试其他表达式
}
......
else{ //上面的表达式都不满足,就执行else中的语句体n;
语句体n;
}(最后一个else可以省略,但是不建议省略)
补充:if语句的格式2和三元运算符可以相互转换;
if语句可以嵌套使用;
②switch语句:
格式:switch(表达式){ 表达式:基本数据类型:byte short char int
case 值1: 引用数据类型可以接收枚举(JDK1.5)String(JDK1.7)
语句体1;
break ; 执行流程:①先计算表达式的值
case 值2: ②然后和case后面的值匹配,如果有就执行相应语句,
语句体2; 否则执行default控制的语句
break;
...... 注意事项:①case后面只能是常量,不能是变量,且不能相同
default: ②default可以省略,但不建议;
语句体n; ③break可以省略,会出现case穿透的情况
break; ④switch结束条件:遇见break或者执行到最后
} ⑤case和default可以无顺序,但先执行case,最后执行
default。default可以放任何位置,但建议在最后面
(3)循环结构
for while do...while
①for循环
格式:for(初始化表达式;条件表达式;循环后的操作表达式){
循环体;
}
执行流程:
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句
d:执行循环后的操作表达式
e:回到b继续
注意事项:
判断条件语句无论简单还是复杂结果是 boolean类型。
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号
②while循环
格式:
初始化条件语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
执行流程:
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续
③do......while循环语句
格式:初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
a:执行初始化语句
b:执行循环体语句;
c:执行控制条件语句
d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
e:回到b继续