Day05
一、转义字符
含义:用来表示有特殊意义的字符本身
符号 | 作用 |
---|---|
\n | 换行 |
\t | 水平制表 |
\” | 双引号 |
\’ | 单引号 |
\ | 一个斜杠 |
二、常量
1、概念
在程序执行过程中不可发生改变的量
2、分类
a. 数字常量:程序中出现的数字
整数数字默认int类型。 小数数字默认 double 类型
b. 字面值常量:双引号括起来的内容
ps :“Hello World”
c. final(最终的)修饰的变量,其也会当成常量处理。
三、Java的执行语句
1、分类:
1.顺序语句:方法里的代码从上往下顺序执行
2.分支语句:判断某个条件,如果成立就执行对应的功能
2.1 if分支
2.2 switch分支
3.循环语句:某个条件成立,就重复性的执行某个功能
3.1 for循环
3.2 while循环
3.3 do-while循环
4.特殊的流程控制语句
4.1 break
4.2 continue
4.3 return
4.4 label
四、简单的if分支
1、语法结构:
if(表达式){
...代码块...
}
2、理解:表达式的结果必须是boolean值
true - 执行代码块
false - 跳过if分支,执行分支以外的代码
3、实验:
if(false){
System.out.println("...代码块...");
}
System.out.println("if分支以外的代码");
案例:
//如果小杨的Java考试成绩大于98分,小杨就能获得一辆法拉利作为奖励
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java考试成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励小杨法拉利玩具赛车一辆");
}
4、小结:
if(){} 要么进入,要么不进入判断
五、复杂的if分支
1、案例一: 人类的健康值在20-25的数值内为健康(健康值算法为:体重(Kg) / 身高(米)的平方)
//输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weigth = scan.nextDouble();
System.out.println("请输入身高(M):");
double heigth = scan.nextDouble();
//计算健康值
double health = weigth/(heigth*heigth);
if(health>=20 && health<=25){
System.out.println("小护士说:\"健康,请保持现有状态\"");
}
2、案例二:小刘 Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double javaScore = scan.nextDouble();
System.out.println("请输入音乐成绩:");
double musicScore = scan.nextDouble();
if((javaScore>98 && musicScore>80) || (javaScore==100 && musicScore>70)){
System.out.println("奖励三小刘棒棒糖一个");
}
3、小结:
1.if可以判断区间
2.if可以判断复杂的条件
六、if…else…
1、语法规则:
if(表达式){
...代码块...
}else{
...else代码块...
}
2、理解:表达式的结果必须是boolean类型的值
true - 执行代码块
false - 执行else代码块
3、实验:
if(false){
System.out.println("...代码块...");
}else{
System.out.println("...else代码块...");
}
System.out.println("if分支以外的代码");
案例:如果小张 Java考试成绩大于98分,老师就奖励他一个劳斯莱斯,否则老师就罚他进行编码
Scanner scan = new Scanner(System.in);
System.out.println("请输入Java成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励椎名空劳斯莱斯玩具赛车一辆");
}else{
System.out.println("何老师给椎名空通宵补课");
}
4、小结:
if…else…在二选一的情况下使用
七、多重if分支
1、语法规则:
if(表达式1){
...代码块1...
}else if(表达式2){
...代码块2...
}else if(表达式n){
...代码块n...
}else{
...else代码块...
}
2、理解:
从上往下判断表达式,哪个表达式先为true,就执行对应的代码块
表达式的结果必须是boolean
true - 执行对应的代码块
false - 往下判断剩余的表达式
如何表达式都不为true,就执行else代码块
注意:else{}根据需求可写可不写
3、实验:
if(false){
System.out.println("...代码块1...");
}else if(false){
System.out.println("...代码块2...");
}else if(false){
System.out.println("...代码块n...");
}else{
System.out.println("...else代码块...");
}
System.out.println("if分支以外的代码");
案例1:人类的健康值在
15-20的数值内为偏瘦
20-25的数值内为健康
25-30的数值内为偏胖
(健康值算法为:体重(Kg) / 身高(米)的平方)
//输入体重和身高
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double weigth = scan.nextDouble();
System.out.println("请输入身高(M):");
double heigth = scan.nextDouble();
//计算健康值
double health = weigth/(heigth*heigth);
//判断区间
if(health>15 && health<=20){
System.out.println("小护士说:\"偏瘦,多喝碳酸饮料,多吃垃圾食品,多熬夜\"");
}else if(health>20 && health<=25){
System.out.println("小护士说:\"健康,请保持现有状态\"");
}else if(health>25 && health<=30){
System.out.println("小护士说:\"偏胖,多做运动,嘿嘿嘿~~~\"");
}else{
System.out.println("小护士说:\"健康值异常,请到医院进行详细检查\"");
}
案例二:通过键盘录入学生成绩如果在90-100之间,则打印“A”,否则如果在80-90之间,则打印“B”,否则如果在70-80之间,则打印“C”否则如果在60-70之间,则打印“D”否则如果在 0-60之间,则打印“E”,否则打印“成绩异常”
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
if(score>90 && score<=100){
System.out.println("A");
}else if(score>80 && score<=90){
System.out.println("B");
}else if(score>70 && score<=80){
System.out.println("C");
}else if(score>60 && score<=70){
System.out.println("D");
}else if(score> 0 && score<=60){
System.out.println("E");
}else{
System.out.println("成绩异常");
}
4、小结:
多重if分支在多选一时使用
八、嵌套if分支
1、案例:千锋举行运动会,百米赛跑跑入16秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛成绩:");
double score = scan.nextDouble();
if(score>=0 && score<16){
System.out.println("请输入性别:");
String sex = scan.next();
if(sex.equals("男")){//比较两个字符串内容是否相同(sex和"男")
System.out.println("恭喜进入到男子组决赛");
}else if(sex.equals("女")){//比较两个字符串内容是否相同(sex和"女")
System.out.println("恭喜进入到女子组决赛");
}else{
System.out.println("性别异常");
}
}else if(score >= 16){
System.out.println("重在参与");
}else{
System.out.println("成绩异常");
}
2、小结:
if可以无限层嵌套
3、经验:if最好不要嵌套3层以上,因为可读性会降低
九、witch分支的使用
1、语法结构:
switch(表达式){
case 值1:
...代码块1...
break;
case 值2:
...代码块2...
break;
case 值n:
...代码块n...
break;
default:
...default代码块...
break;
}
2、理解:
表达式的结果分别跟值1、值2、值n比较
哪个相同就执行对应的代码块
如果都不相同就执行default代码块
default代码块相当于if中的else(其余的情况)
break表示跳出整个分支语句
3、实验:
switch(1000){
case 10:
System.out.println("10");
break;
case 50:
System.out.println("50");
break;
case 100:
System.out.println("100");
break;
default:
System.out.println("default代码块");
break;
}
System.out.println("switch分支以外的代码");
十、switch分支的深入
面试题:
1、case的值可以相同吗?
不能相同
2、default可以省略吗?
可以
3、break可以省略吗?
可以
4、default的位置一定要在最后吗?
不一定(经验:最好放在最后,因为考虑到代码的可读性)
5、表达式值的类型可以是什么?
byte、short、int、char、枚举(JDK1.5)、String(JDK1.7)
6、switch底层判断的逻辑是什么?
switch底层判断的都是int类型,因为switch底层有个字节码命令,必须接受int类型的值
byte --> int 自动转型
short --> int 自动转型
int --> int 直接使用
char --> int 获取的是字符的Unicode码
枚举 --> int 获取枚举对象的编号
String --> int 获取的字符串的hash码(hash码:字符的Unicode+散列算法得到的一个数字)