java执行语句(上)
1.顺序语句:方法中的代码从上往下执行
方法内部代码从上往下运行,总体代码的大致运行方向
2.分支语句:根据不同的条件,指定不同的功能
2.1 if分支
简单的if分支
语法结构: if(表达式){ …代码块… }
理解:表达式的结果必须是boolean类型,即true,false true - 执行代码块 false - 跳出if分支
做实验: if(false){ System.out.println("…代码块…"); } System.out.println(“if分支以外的代码”);
案例:如果小明的Java考试成绩大于98分, 麻生希就能获得一辆法拉利作为奖励
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩:");
double score = scan.nextDouble();
if(score > 98){
System.out.println("奖励小明法拉利玩具赛车一辆");
}
}
if…else…
语法结构: if(表达式){ …代码块… }else{ …else代码块… }
理解: 表达式的结果必须是boolean true - 执行代码块 false- 执行else代码块
案例:如果小明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("老师给小明通宵补课~~~");
}
if…else if…
语法结构: if(表达式1){ …代码块1… }else if(表达式2){ …代码块2… }else if(表达式n){ …代码块n… }else{ …else代码块… }
理解: 表达式的结果必须是boolean 从上往下依次判断表达式,哪个表达式先为true,就执行对应的代码块 所有的表达式都不为true,就执行else代码块 注意:else{}根据需求可写可不写
案例:人类的健康值在 15-20的数值内为偏瘦 20-25的数值内为健康 25-30的数值内为偏胖 (健康值算法为:体重(Kg) / 身高(米)的平方)
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入体重(Kg):");
double wigth = scan.nextDouble();
System.out.println("请输入身高(M):");
double heigth = scan.nextDouble();
double health = wigth/(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("小护士说:\"健康值异常,请到医院详细检查\"");
}
}
}
嵌套if分支
案例:运动会中百米赛跑跑入16秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。
public static void main(String[] args){
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("男")){
System.out.println("恭喜进入到男子组决赛");
}else if(sex.equals("女")){
System.out.println("恭喜进入到女子组决赛");
}else{
System.out.println("性别异常");
}
}else if(score >= 16){
System.out.println("重在参与");
}else{
System.out.println("成绩异常");
}
注意!:sex.equals(“男”) ,该语句意思是:将字符串sex与字符串”男“对比是否相同,不可使用 sex==“男”,后期的学习中再行解释。
总结if:
语法的区别:
? if(){}:最简单的if ? if…else…:二选一 ? if…else if…:多选一 ? if可以无限层嵌套 ? 应用场景: ? 可以判断单个值 ? 可以判断区间 ? 可以判断复杂的条件
2.2 switch分支
语法结构: switch(表达式){ case 值1: …代码块1… break; case 值2: …代码块2… break; case 值n: …代码块n… break; default: …default代码块… break; }
理解: 表达式的结果可以是:byte、short、int、枚举(JDK1.5)、String(JDK1.7) 分别和值1、值2、值n比较,哪个相等,就执行对应的代码块 break:跳出switch分支语句 default代码块类似于else{},是其余其他情况的意思,根据需求可写可不写
案例:小明参加计算机编程大赛 如果获得第一名,1个月马尔代夫旅游 如果获得第二名,奖励苹果Pro笔记本电脑一部 如果获得第三名,奖励移动硬盘一个 否则,通宵补课
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛名次:");
String str = scan.next();
switch(str){
case "第一名":
System.out.println("1个月马尔代夫旅游");
break;
case "第二名":
System.out.println("奖励苹果Pro笔记本电脑一部");
break;
case "第三名":
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("通宵补课");
break;
}
}
}
深入switch分支:
面试题: case的值可以相同吗? 不可以 default可以省略吗? 可以 break可以省略吗? 可以 default的位置一定要在最后吗?不一定 case后面值的类型可以不一样吗?可以不一样,但是必须兼容(向上兼容) 表达式值的类型可以是什么?byte、short、int、枚举(JDK1.5)、String(JDK1.7)
switch表达式的类型为什么只有byte、short、int、枚举(JDK1.5)、String(JDK1.7)? switch表达式的结果在底层只接受int byte自动转型成int short自动转型成int 枚举的对象系统会给他赋int值 String是获取的ASCII码
public static void main(String[] args){
switch(97){
case 'a':
System.out.println("97");
case 10:
System.out.println("10");
case 50:
System.out.println("50");
break;
default:
System.out.println("...default代码块...");
break;
}
System.out.println("switch分支以外的代码");
}
输出如下:
97 10 50 switch分支以外的代码
利用取消break简化代码,增强代码可读性。 需求:输入年和月,输出当月的天数
? 闰年:被4整除且不能被100整除 或者 被400整除的年份
import java.util.Scanner;
public class MyTest08 {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
System.out.println("请输入月份:");
int month = scan.nextInt();
int day=0;
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day=31;
break;
case 4:case 6:case 9:case 11:
day=30;
break;
case 2:
if(year%4==0&&year%100!=0 || year%400==0){
day =29;
}
else{
day=28;
}
break;
}
System.out.println(year+"年"+month+"月的天数为:"+day);
}
}
if vs switch
? 语法结构的区别: ? if的表达式:boolean ? switch的表达式:byte、short、int、枚举(JDK1.5)、String(JDK1.7)
应用场景的区别:
? if:判断单个值、区间、复杂的条件 ? switch:判断单个值
3.循环语句:条件成立,就重复性的执行某个功能
3.1 for循环
for循环 含义:条件成立就重复执行 好处:减少了代码的冗余(减少重复性的代码)
语法结构: for(表达式1;表达式2;表达式3){ …代码块… }
理解:
? 表达式1:初始化变量 ? 表达式2:判断条件 ? 表达式3:更新变量
执行流程: 1.初始化变量 2.判断条件:判断条件的结果必须是boolean 2.1 true - 执行代码块,并更新变量,重复第2个步骤 2.2 false- 跳出整个循环语句
理解案例1:输出1-9的数字
for(int i = 1;i<=9;i++){
System.out.println(i);
}
理解案例2:输出0-9的数字
for(int i = 0;i<10;i++){
System.out.println(i);
}
总结 - 理解案例:i可以从1开始也可以从0开始,更新变量可以递增也可以递减
死循环:(应该避免的)
for(;;){
System.out.println("死循环");
}
伪死循环:(应该避免的)
for(int i = 0;i>=0;i++){
System.out.println("伪死循环");
}
下期学习:
3.2 while循环 3.3 do-while循环
4.特殊的流程控制语句
4.1 break 4.2 continue 4.3 return 4.4 lable
|