一,昨日回顾
(1)键盘录入的使用步骤是什么?
固定写法:
(a)创建键盘录入对象
Scanner sc=new Scanner(System.in);
(b)导包,位置class上面
import java.util.Scanner;
©提示并接受数据
int num=sc.nextInt();
(d)输出变量
System.out.println(num);
(2)位运算符中的位异或特点是什么?
位异或^基本特点:相同则为0,不同则为1(二进制数据)
特殊特点:一个数为异或另一个数据两次,其值是它本身
(3)请使用有效方式表示2的4次方=16
2<<3
位移符号:
<<:特点:当前数据乘以2的移动次幂
左移的时候,最高符号位丢弃掉,在右边补齐0
>>:特点:当前数据本身除以2的移动次幂
右移的时候,最高符号位为1,左边补齐1,为0则补齐0
>>>:无论最高符号位是1还是0,左边都补齐0
(4)三元运算符的格式以及执行流程是什么?
(表达式)?表达式1:表达式2
执行流程:判断表达式是否成立,如果为true,成立,执行表达式1的结果;不成立,执行表达式2的结果
逻辑运算符:
基本逻辑符号:
&:有false则false
|:有true则true
^:相同则为false,不同则为true
!:非true则false,非false则true
扩展的逻辑符号:
&和&&的区别?
共同点:符合基本特点:有false则false
不同点:逻辑双与:如果连接的左边的表达式位false,右边表示不执行,具有短路效果
位运算符:
基本运算符:
位与&:有0则0
位|:有1则1
位异或^:相同则为0,不同则为1
~反码:全部按位取反,0变1,1变0
三元运算符:
(表达式)?表达式1:表达式2
执行流程:判断表达式是否成立,如果为true,成立,执行表达式1的结果;不成立,执行表达式2的结果
键盘录入:
固定写法:
(a)创建键盘录入对象
Scanner sc=new Scanner(System.in);
(b)导包,位置class上面
import java.util.Scanner;
©提示并接受数据
int num=sc.nextInt();
再次接收判断
进行业务逻辑操作
(d)输出结果变量
二,今日内容
if语句
格式1:
if(表达式){
语句
}
执行流程:针对一种情况进行判断
判断表达式是否成立,如果为true,执行语句,否则不执行
注意事项:(1)针对格式1这种情况语句中的大括号可以省略,但是不建议,{}表示一个作用域
(2)if后面不能有分号,有分号的地方不能有{}
(3)if语句后面如果有分号,if语句没有意义
{
代码块
}
局部代码块的作用是限定变量的生命周期
class Ifs{
public static void main(String[] args){
int x=8;
if(x>5){
System.out.println("x的值大于5");
}
int y=10;
if(x>5||x<10){
System.out.println("x大于5");
System.out.println("x小于10");
}
System.out.println("over");
}
}
if语句的格式2:
if(表达式){
语句1;
}else{
语句2;
}
执行流程:(1)首先判断表达式是否成立
(2)如果成立执行语句1
(3)如果不成立,执行语句2
class Ifs{
public static void main(String[] args){
int x=8;
int y=9;
if(x==y){
System.out.println("x等于y");
}else{
System.out.println("x不等于y");
}
System.out.println("over");
}
}
能用三元运算符实现,一定能够使用if实现;如果能用if实现,不一定能使用三元运算符!
为什么?
三元运算符描述的是一种运算符,最终计算的应该是具体的结果,if语句是一种流程控制语句,如果牵扯判断是一种结构复杂的语句,不一定能够使用三元区实现!
一般情况,如果带有逻辑符号以及加上选择判断,优先采取if语句实现!
练习:键盘录入两个数据,判断最大值?
键盘录入数据,判断是奇数还是偶数?
import java.util.Scanner;
class Ifs{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个值");
int x=sc.nextInt();
System.out.println("请输入第二个值");
int y=sc.nextInt();
//if语句
if(x>y){
System.out.println("x:"+x);;
}else{
System.out.println("y:"+y);;
}
System.out.println("--------------");
//三元运算符
int max=(x>y)?x:y;
System.out.println("max:"+max);
System.out.println("--------------");
//判断奇偶性
System.out.println("输入一个值");
int z=sc.nextInt();
if(z%2==1){
System.out.println("奇数");
}else{
System.out.println("偶数");
}
}
}
if语句的格式3
if(表达式1){
语句1;
}else if(表达式2){
语句2;
...
...
}else{
语句n+1;
} 针对多个表达式进行判断
执行流程:(1)首先判断表达式1是成立,如果成立,执行语句1
(2)如果不成立,继续判断表达式2是否成立,如果成立,执行语句2
(3)如果表达式都不成立,执行else语句,执行语句n+1..
练习:键盘录入一个学生的成绩,判断学生成绩属于哪个等级
90 ~ 100 优秀
80 ~ 90 良好
70 ~ 80 一般
60 ~ 70 及格
0 ~ 60 不及格
import java.util.Scanner;
class Ifs{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("输入一个值");
int x=sc.nextInt();
if(x<0||x>100){
System.out.println("输入的数据不合法");
}else if(x>=90&&x<100){
System.out.println("优秀");
}else if(x>=80&&x<90){
System.out.println("良好");
}else if(x>=70&&x<80){
System.out.println("一般");
}else if(x>=60&&x<70){
System.out.println("及格");
}else{
System.out.println("不及格");
}
}
}
switch 语句:
格式:
switch(表达式){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
…
…
default:
语句n+1;
break;
}
执行流程:(1)switch表达式,得到一个结果,首先需要和case后面的值1进行比较,如果匹配,执行语句1,遇见break,结束语句
(2)如果case后面的值1不匹配,然后case值2进行匹配,如果成功,执行语句2,break结束
(3)依次这样进行选择判断,如果都不匹配,执行default语句,结束!
import java.util.Scanner;
class Ifs{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("输入一个值");
int x=sc.nextInt();
switch(x){
case 1:
System.out.println("周一");
break;
case 2:
System.out.println("周二");
break;
case 3:
System.out.println("周三");
break;
case 4:
System.out.println("周四");
break;
case 5:
System.out.println("周五");
break;
case 6:
System.out.println("周六");
break;
case 7:
System.out.println("周日");
break;
default:
System.out.println("输入数据不合法");
break;//default 的break放在末尾可省略,在句中不可以,
}
}
}
面试题:byte类型可以作为switch中的表达式吗?
可以
String类型可以作为switch中的表达式吗?
jdk可以,包括1.7
long类型可以作为switch中的表达式吗?
不行
switch后面的表达式可以跟的数据类型:int,short,char,byte,jdk1.5(包括)以后,可以是eunm(枚举类型),jdk17(包括)以后,可以是Sting类型
switch语句中的注意事项:
(1)case后面只能跟常量,不能变量
(2)default语句可以在switch语句中的任意位置
如果在末尾,break可以省略;但是如果在语句中,那么break不能省略;否则,会造成一种现象,case穿透!
break:属于跳转控制语句(中断结束)
switch语句的结束条件是什么?
(1)遇见break,语句结束
(2)程序要默认执行到末尾
default语句可以在switch语句中的任意位置