流程控制语句(分支)
Java 基础语法 变量 变量的概念 变量的使用 声明 初始化 标识符的命名规则 数字 字母下划线 美元符号 不能以数字开头 不能使用java中的关键字保留字 驼峰命名 见名知意 数据类型 基本数据类型 四大类 八种 整数型(byte short int long) 浮点型(float double ) 字符型(char) 布尔型(boolean) 引用数据类型 String Scanner 数据类型转换 自动类型转换 小转大 自动转 强制类型转换 大转小 强制转换 再前面加上括号和相应的数据类型 数据类型转换的细节: byte short char 参与 自动提升 int 出现任何一个整数都是int 出现任何一个小数都是double 发生强转的时候 会有数据的丢失 运算符 算术运算符 ++ -- 赋值运算符 =赋值 关系运算符 结果都是boolean 逻辑运算符 与 或 非 短路与 短路或 三目运算符 用来简单的判断 位运算符 按位与 同为1 为1 按位或 相同为0 才为0 按位亦或 相同位数相同为0 不同为1 按位取反 就是每一位取反 左移 右移 补码移动 无符号右移 要用32位 无论正负 向右移N位 高位补0
一、流程控制语句 三大结构
-
简单的if分支
-
语法:
-
if(逻辑条件判断(boolean类型)){
-
满足条件执行的代码块
-
}
-
-
package com.qf; import java.util.Scanner; public class Demo01 { public static void main(String[] args) { //案例 如果成绩大于90 奖励豪华作业题一套 Scanner sc = new Scanner(System.in); System.out.println("请输入你的成绩"); int score = sc.nextInt(); if (score>=90){ //这里是满足条件 成绩大于等于90 执行的代码块 System.out.println("奖励豪华作业一套"); } System.out.println("欢迎下次再来"); // 如果年龄大于65 可以领取养老金 System.out.println("请输入年龄"); int age=sc.nextInt(); if (age>=65){ //执行的代码块 System.out.println("可以领取养老金"); } // 如果 身高大于180 且体重小于180 就可以当模特 System.out.println("请输入你的身高(cm)"); int height = sc.nextInt(); System.out.println("请输入你的体重(500g)"); int weight = sc.nextInt(); if (height>180 && weight<180){ System.out.println("可以当模特"); } } }
二、if....else分支
-
语法:
-
if(逻辑条件){
-
满足逻辑条件执行代码
-
}else{
-
不满足逻辑条件执行的代码
-
}
-
package com.qf; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { //案例 如果 用户名为 admin 密码123456 则跳转首页 否则 返回登陆页面、 //创建 Scanner 对象 Scanner sc = new Scanner(System.in); //获取用户名 System.out.println("欢迎进入JavaEE 2301 班级登陆系统"); System.out.println("请输入用户名"); String userName = sc.next(); System.out.println("请输入密码"); String passWord = sc.next(); if (userName.equals("admin")&&passWord.equals("123456")){ System.out.println("跳转首页"); }else{ System.out.println("用户名或密码错误 请重新输入"); System.out.println("跳转登陆页面"); } // 案例 如果身上的余额大于100元 中午吃饭加个鸡腿 否则泡面 System.out.println("请输入你的余额"); int money = sc.nextInt(); if (money >=100){ System.out.println("加个鸡腿吧"); }else { System.out.println("吃泡面吧"); } //在java当中 == 比较的是内存地址 比较基本数据类型的时候使用== 比较 所以在后面的字符串比较不要使用 == // 而应该使用equals } }
三、多重if分支
-
语法
-
if(逻辑条件1){
-
满足条件 1 执行的代码
-
}else if(逻辑条件2){
-
满足条件 2 执行的代码
-
} else if(逻辑条件3){
-
满足条件 3 执行的代码
-
}else{
-
不满足以上所有条件执行的代码
-
}
-
package com.qf; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { /* * 案例: * 根据手上的余额来选择手机品牌 * 如果大于10000 买个 iphone 14 pro max * 如果大于7000 买个 华为meta15 * 如果大于5000 买个 小米13 * 如果大于3000 vivoX12 * 否则,座机 * * * */ Scanner sc = new Scanner(System.in); System.out.println("请输入你的余额"); int money = sc.nextInt(); if (money>10000){ System.out.println("购买了iphone 14 pro max "); }else if(money>7000){ System.out.println("购买了华为meta15 "); }else if (money>5000){ System.out.println("购买小米13"); }else if(money>3000){ System.out.println("购买了vivoX12"); }else { System.out.println("打座机"); } } }
四、嵌套if 分支
-
语法:
-
if(逻辑条件1){
-
if(逻辑条件2){
-
满足逻辑条件1 且 条件2满足条件执行的代码
-
}else{
-
满足条件1 但不满足条件2执行的代码
-
}
-
}else{
-
不满足逻辑条件1执行的代码
-
}
-
package com.qf; import java.util.Scanner; public class Demo04 { public static void main(String[] args) { //案例 学校举办跑步比赛 如果成绩在15s 以内 就进入决赛 ,男的进男子组,女的进女子组 System.out.println("请输入你的比赛成绩"); Scanner sc = new Scanner(System.in); double score = sc.nextDouble(); if (score<15){ System.out.println("请输入你的性别"); String sex = sc.next(); if (sex.equals("男")){ System.out.println("请你进入男子组"); }else { System.out.println("请你进入女子组"); } }else { System.out.println("非常遗憾 你被淘汰了"); } } }
五、分支语句的细节
-
注意:
-
在java中== 比较的是内存地址 String类的equals 比较的是内容
-
基本数据类型使用== 比较
-
String类型使用equals比较
-
-
注意2:
-
在if分支中,大括号可以省略不写,但是如果大括号不写的话,那么这个if分支只能控制一行代码
-
-
注意3:
-
多重if要将苛刻的条件写在前面
-
六、switch分支
6.1 switch分支的使用
-
switch分支结构
-
switch的值:byte short int char String 枚举类型
-
switch(值){
-
case值1:
-
switch 中的值与值1 相等的时候执行的代码
-
break;
-
case值2:
-
switch 中的值与值2 相等的时候执行的代码
-
break;
-
case值3:
-
switch 中的值与值3 相等的时候执行的代码
-
break;
-
case值n:
-
switch 中的值与值n 相等的时候执行的代码
-
break;
-
default :
-
switch中值 与以上的所有值都不匹配的时候执行的代码
-
}
-
package com.qf; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { /* * 案例 * 选择1 查询操作 * 选择2 增加操作 * 选择3 删除操作 * 选择4 修改操作 * 选择5 退出系统 * 选择其他 提示输入有误 * * * * */ System.out.println("请做出你的选择"); Scanner sc = new Scanner(System.in); int option = sc.nextInt(); switch (option){ 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; default: System.out.println("输入有误"); } } }
6.2 switch 分支细节
-
在switch当中case的值不可以重复
-
switch的break 表示结束当前switch语句
-
break可以省略 (一般不省略) 如果省略的话 代码会一直往下执行 知道遇到下一个break
-
-
switch 和多重if的区别:
-
多重if 可以做关系运算 在switch中就只能做等值判断
-
-
案例:(要求选择A a 的结果一致)
-
选择A 好评
-
选择B 一般
-
选择C 良好
-
选择D 差评
package com.qf; import java.util.Scanner; public class Demo06 { public static void main(String[] args) { //- 案例:(要求选择A a 的结果一致) //- 选择A 好评 //- 选择B 一般 //- 选择C 良好 //- 选择D 差评 System.out.println("请做出你的选择"); Scanner sc = new Scanner(System.in); String option = sc.next(); switch (option){ case "a": case "A": System.out.println("好评"); break; case "b": case "B": System.out.println("一般"); break; case "c": case "C": System.out.println("良好"); break; case "d": case "D": System.out.println("差评"); break; } } }