Day03
03.01 逻辑运算符的基本用法
1、逻辑运算符有哪些
& | ^ ! && ||
2、案例演示
逻辑运算符的基本用法
注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值
b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式
子
3、结论:
&逻辑与(并且、and):有false为false
|逻辑或:有true为true
^逻辑异或:相同为false,不同为true
!逻辑非:非false为true,非true为false
特点:偶数个不改变本身
03.02 逻辑运算符 &&(短路与)和&的区别
1、案例演示
&&(短路与)和&的区别:最终结果都一样;&&具有短路效果,左边为
false,就不执行右边了
2、同理||和|的却别
||(短路与)和|的区别:最终结果都一样;||具有短路效果,左边为true,就不执行右边了
3、开发中常用 && || !
03.03 位运算符的基本用法
1、位运算符有哪些
&(位与) |(位或) ^(位异或) ~取反 >>(向右移)
>>>(无符号向右移) <<(向左移)
2、案例演示
位运算符的基本用法
& | ^ ~的用法
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反
基本与逻辑运算一样,0代表false,1代表true
03.04 位异或运算符的特点及面试题
1、案例演示
位异或运算符的特点
^的特点:一个数据对另一个数据异或两次,该数本身不变
2、面试题
请自己实现两个整数变量的交换
03.05 位运算符的基本用法2及面试题
1、案例演示
<<左移 左边最高为丢弃 右边补齐0
>>右移 最高位是0,左边补齐0;最高位是1,左边补齐1
>>>无符号右移 无论最高位是0还是1,左边补齐0
有无符号无别:有符号最后全是1,无符号最后可归0(了解)
2、面试题
最有效率的算出 2 * 8的结果(最后都是二进制数进行操作)
03.06 三元运算符的基本用法
1、三元运算符的格式
(关系表达式)?表达式1:表达式2
关系表达式为true,就用表达式1,false的话就用表达式2
2、三元运算符的执行流程
3、案例演示
获取两个数中的最大值
03.07 三元运算符的练习
1、案例演示
比较两个整数是否相同
2、案例演示
获取三个整数中的最大值
03.08 键盘录入的基本格式讲解
1、为什么要使用键盘录入数据?为了让程序的数据更符合开发的数据;让程序更灵活
2、如何实现键盘录入呢?
1、导包
格式 import java.util.Scanner;
位置:在class上面
2、创建键盘录入对象
格式: Scanner sc = new Scanner(System.in);
3、通过对象获取数据
格式:int x = sc.nextInt();
3、案例演示
键盘录入1个整数,并输出到控制台
键盘录入2个整数,并输出到控制台
03.09 键盘录入的练习1
1、键盘录入两个数据,并对这两个数据求和,输出结果
2、键盘录入两个数据,获取这两个数据中的最大值
03.10 键盘录入的练习2
1、键盘录入两个数据,比较这两个数据是否相等
2、键盘录入三个数据,比较这三个数据中的最大值
03.11顺序结构语句
1、流程控制语句:可以控制程序的执行流程
2、流程控制语句的分类:
顺序结构
选择结构
循环结构
3、顺序结构执行流程
从上往下,依次执行
4、顺序结构案例:输出几句话看效果即可
03.12 选择结构if语句格式1及其使用
1、选择结构的分类:if语句 switch语句
2、if语句有几种格式
格式1
格式2
格式3
3、if语句的格式1
if(比较表达式) {
语句体;
}
4、执行流程:
先计算表达式的值,看其返回值是true还是false
true就执行语句体
false 就不执行语句体
03.13 选择结构if语句注意事项
1、比较表达式无论简单还是复杂,结果必须是布尔类型
2、if语句控制的语句体如果是一条语句,大括号可以省略;
如果是多条语句,就不能省略
3、一般来说:有左大括号就没有分号,有分号就没有左大括号,即if后面分号和大括号不可共存
03.14 选择结构if语句格式2及其使用
1、if语句的格式2
if(比较表达式){
语句体1;
}else{
语句体2;
}
2、执行流程:
首先计算比较表达式的值,看其返回值是true还是false
如果是true 就执行语句体1
如果是false 就执行语句体2
3、案例演示
获取两个数据中较大的值
判断一个数据是奇数还是偶数,并输出是奇数还是偶数
注意事项:else后面是没有比较表达式的,只有if后面有
03.15 if语句的格式2和三元的相互转换问题
1、案例演示
if语句和三元运算符完成同一个效果
2、案例演示
if语句和三元运算符的区别
三元运算符实现的,都可以采用if语句实现,反之不成立。
什么时候if语句实现不能用三元改进呢?
当if语句控制的操作是一个输出语句的时候就不能
为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该
有一个结果,而不是一个输出。
开发中尽量使用三元运算符,因为代码比较简单
03.16 选择结构if语句格式3及其使用
1、if语句的格式3:
if(比较表达式1){
语句体1;
}else if(比较表达式2){
语句体2;
} else if(比较表达式3){
语句体3;
}
...
else{
语句体n+1;
}
2、执行流程:
首先计算比较表达式1看起返回值是true还是false
如果是true,就执行语句体1,if语句结果
如果是false,接着计算比较表达式2看其返回值是true还是false
如果是true,就执行语句体2,if语句结束
如果是false,接着计算比较表达式3,看其返回值是true还是false
如果都是false,就执行else中的语句体n+1
注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示
03.17 选择结构if语句格式3练习
1、需求:键盘录入一个成绩,判断并输出成绩的等级
90-100 优;80-89良;70-79中;60-69及;0-59差
2、需求:键盘录入x的值,计算出y的并输出
x >= 3 y = 2 * x + 1;
-1 < x < 3 y = 2 *x
x <=-1 y = 2 * x – 1
03.18 选择结构if语句的嵌套使用
1、需求:获取三个数据中的最大值
if语句的嵌套使用
03.19 选择结构switch语句的格式及其解释
1、switch语句的格式
switch(表达式){ //基本数据类型可以接受byte、short、char、int
case值1: (可以自动提升为int类型的都可以)
语句体1; //引用数据类型可以接受枚举(1.5版本以后)
break; //和String字符串(1.7版本以后)
case值2:
语句体2;
break; //case值不允许重复
...
default :s//有点像else
语句体n+1;
break;
}
2、switch语句的格式解释
3、面试题
byte可以作为switch的表达式吗?可以
long可以作为switch的表达式吗?不可以
String可以作为switch的表达式吗?可以
4、执行流程
先计算表达式的值
然后和case后面的匹配,如果有就执行对应的语句,否则执行default
控制的语句
03.20 选择结构switch语句的练习
整数(给定一个值,输出对应星期几)
03.21 选择结构switch语句的注意事项
1、案例演示
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现
相同的
default可以省略,但是不建议,因为它的作用是对不正确的情况给出提
示 特殊情况:case可以把值固定,就可以省略
break可以省略么?最后一个可以省略,其他最好不要省略,会出现一个
现象:case穿透,最终我们建议不要省略,没有break,会遇到break或右大括号才结束,会一路执行语句体
default一定要在最后么?不是,可以在任意位置,但是建议在最后,即
使不放在最后位置,也是最后被执行
switch语句的结束条件:遇到break或者是switch的右大括号才结束
03.22 选择switch语句练习
1、看程序写结果
int x = 2;
int y = 3;
switch(x){
default:
y++;
break;
case 3:
y++;
case 4:
y++;
}
System.out.println(“y =”+y); // y = 4
2、看程序写结果
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println(“y =”+y); // y = 6
03.23 选择结构if语句和switch语句的区别
1、总结switch语句和if语句的各自使用场景
switch建议判断固定值的时候用a
if建议判断区间或范围的时候用
2、案例演示
分别用switch语句和if语句实现下列需求:
键盘录入月份,输出对应的季节