Java入门学习第三章
判断、选择与循环
在A.Java中定义了一个方法,想要在B.java中使用的语法如下所示:
①在lib.java中定义了getKeyValue
package com.Crossbar.library;import java.util.Scanner;public class lib {public static int getKeyValue(){System.out.println("请输入一个整数:");int keyValue=0;Scanner sc=new Scanner(System.in);keyValue=sc.nextInt();return keyValue;}
}
②在TernaryOptr.java中想要使用
import static com.Crossbar.library.lib.getKeyValue;
02 练习:游戏血条计算
package com.Crossbar.ifdemo;import static com.Crossbar.library.lib.getKeyValue;public class kindred {public static class KindRed{private int health=200;public void recover(){System.out.println("请输入恢复值:");int y=getKeyValue();health=health+y;}public void hurt(){System.out.println("请输入伤害值:");int x=getKeyValue();health=health-x;}//这个class实例化的对象health无法低于1点(角色无法死亡)//但是血量上限200点public int getHealth(){if(this.health<=0){this.health=1;}else if(this.health>200){this.health=200;}return health;}}public static void main() {int blood=0;KindRed kindred=new KindRed();kindred.hurt();kindred.recover();blood=kindred.getHealth();System.out.println("当前血量是:"+blood);}}
02 switch的其他知识点
①Java中的switch语句具有穿透特性
机制如下:

但它并不是一个bug,而是语言设计师留下的机制,可以用来优化代码。
int month=11;/*定义345月为春天,678为夏天,9 10 11为秋天,12 1 2月为冬天*/switch (month){case 1:case 2:case 12:System.out.println("冬天");break;case 3:case 4:case 5:System.out.println("春天");break;case 6:case 7:case 8:System.out.println("夏天");break;case 9:case 10:case 11:System.out.println("秋天");break;default:System.out.println("输入的月份有误");break;}
②switch在JDK14之后的新特性
(1)箭头标签
public static void main() {int season=0;switch (season){case 0 ->{System.out.println("春天");}case 1 ->{System.out.println("夏天");}case 2 ->{System.out.println("秋天");}case 3 ->{System.out.println("冬天");}}}
->和{}可以屏蔽case穿透机制,只有单句的话可以省略{}。
(2)case后面可以写多个值
int month=11;switch (month){case 1,2,3 -> System.out.println("第一季度");case 4,5,6 -> System.out.println("第二季度");case 7,8,9 -> System.out.println("第三季度");case 10,11,12 -> System.out.println("第四季度");default -> System.out.println("输入错误");}
(3)switch可以有运行结果(4)yield关键字
public static void main() {int month=11;String quarter=switch (month){case 1,2,3 -> {yield "第一季度";}case 4,5,6 -> {yield "第二季度";}case 7,8,9 -> {yield "第三季度";}case 10,11,12 -> {yield "第四季度";}default -> {yield "无效的月份";}};System.out.println(quarter);}
如果语句只有一行,大括号和yield可以省略。
③switch语法细节

