引言
- 在记录自己自学java过程中,首先声明关于学习顺序可能并不很科学,即使我也是通过一些公开的资料来进行学习,但不会是完全无基础的教学,更像是比对着python(本人平时编程使用的是python)比较实现方法的异同学习,请酌情参考学习,有理解不对的地方欢迎指正。
java-流程控制 3
switch多重选择(python中是没有该选择的)
"switch yield"
- 从java14开始, switch语句有了更多的操作和选择,在代码上,更加的简便灵活,有如下几种写法,本文将介绍最后一个配合关键字yield的用法
- switch 标准方式
- switch - > 用法:
- switch yield 用法:
- 首先我们使用标准方式比较简单明了,再用yield编写进行比较(注意下面标准格式代码无法直接运行!!)
String weekday = null
int dayOfWeek = 2
switch (dayOfWeek) {
case 1:
weekday = "星期一"
break
case 2:
weekday = "星期二"
break
case 3:
weekday = "星期三"
break
case 4:
weekday = "星期四"
break
case 5:
weekday = "星期五"
break
case 6:
weekday = "星期六"
break
default:
weekday = "星期日"
break
}
System.out.println(weekday)

public class Main {
public static void main(String[] args) {
int dayOfWeek = 2;
String weekday = switch (dayOfWeek) {
case 1:
yield "星期一";
case 2:
yield "星期二";
case 3:
yield "星期三";
case 4:
yield "星期四";
case 5:
yield "星期五";
case 6:
yield "星期六";
default:
yield "星期日";
};
System.out.println(weekday);
}
}
- 使用yield后(个人感觉还是比->更简洁一些)
- 首先weekday变量不用提前定义和定义类型了
- 其次依然不用写break
- 当然还有更多其他用法
int flag = 2
string ss
ss = switch (flag){
case 0 -> "the number is 0"
case 1 -> "the number is 1"
case 2 -> {
string c = "the number is 2"
yield c
}
default -> "you are right"
}
system.out.println(ss)
关于return与yield的区别
- 我没有找到关于Java中使用和python中使用的具体不同,所以以下结论暂定均为python中的解答
- 最通俗的解释:
- return:在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。
- yield: 带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束(这个迭代器只用使用next()函数去执行才算是真的执行,迭代器单独执行只是生成了一个迭代器而已)
- 此处不对yield过多赘述,可以参考python中的解释:参考资料