自学Java24

140 阅读2分钟

引言

  • 在记录自己自学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中的解释:参考资料