超级进化吧switch case in java

这篇具有很好参考价值的文章主要介绍了超级进化吧switch case in java。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因为长情是古董,所以假货特别多

觉得太长可以直接看总结就可以了

简介

Switch case语句在Java中是一种流程控制结构,用于将一个值与一系列可能的情况进行比较,并根据匹配的情况执行相应的代码块。在不同的Java版本中,switch case标签的用法略有不同。

区别

Java 6及以下 | 整数当道

以下是一些Java版本中的区别:

  1. Java 6及以下版本:在Java 6及以下版本中,switch case标签只支持整数、枚举类型和字符类型。以下是一个使用整数类型标签的示例代码:
int num = 2;
switch (num) {
    case 1:
        System.out.println("Number is one");
        break;
    case 2:
        System.out.println("Number is two");
        break;
    case 3:
        System.out.println("Number is three");
        break;
    default:
        System.out.println("Number is not between 1 and 3");
}

Java 7 | String来贺

  1. Java 7版本:在Java 7版本中,switch case标签支持字符串类型。以下是一个使用字符串类型标签的示例代码:
String fruit = "apple";
switch (fruit) {
    case "apple":
        System.out.println("The fruit is an apple");
        break;
    case "banana":
        System.out.println("The fruit is a banana");
        break;
    case "orange":
        System.out.println("The fruit is an orange");
        break;
    default:
        System.out.println("The fruit is unknown");
}

Java 8 | 常量不够, 表达式来凑

  1. Java 8及以上版本:在Java 8及以上版本中,switch case标签支持使用表达式作为标签。以下是一个使用表达式类型标签的示例代码:
final int MONDAY = 1;
final int TUESDAY = 2;
final int WEDNESDAY = 3;
final int THURSDAY = 4;
final int FRIDAY = 5;
final int SATURDAY = 6;
final int SUNDAY = 7;
int dayOfWeek = 5;
switch (dayOfWeek) {
    case MONDAY:
    case TUESDAY:
    case WEDNESDAY:
    case THURSDAY:
    case FRIDAY:
        System.out.println("Today is a weekday");
        break;
    case SATURDAY:
    case SUNDAY:
        System.out.println("Today is a weekend day");
        break;
    default:
        System.out.println("Invalid day of week");
}

在这个示例中,我们使用了final变量作为标签,并且在一个case语句中匹配了多个标签。

Java 12 | ->替: yield能返回

  1. Java 12及以上版本:在Java 12及以上版本中,switch case标签引入了新的语法:使用箭头操作符(->)代替冒号(:)来连接标签和代码块。同时,还引入了新的关键字yield,用于在switch表达式中返回值。以下是一个使用箭头操作符和yield的示例代码:
String fruit = "apple";
String result = switch (fruit) {
    case "apple" -> {
        yield "The fruit is an apple";
    }
    case "banana" -> {
        yield "The fruit is a banana";
    }
    case "orange" -> {
        yield "The fruit is an orange";
    }
    default -> {
        yield "The fruit is unknown";
    }
};
System.out.println(result);

在这个示例中,我们使用了switch表达式来获取一个返回值,并在每个case语句中使用箭头操作符和yield来指定返回值。

Java 14 | ->凑多值,转型在心中

  1. Java 14及以上版本:在Java 14及以上版本中,switch case标签引入了新的语法:使用“->”箭头操作符来连接多个标签。以下是一个使用箭头操作符连接多个标签的示例代码:
int num = 2;
switch (num) {
    case 1, 2, 3 -> System.out.println("The number is between 1 and 3");
    case 4, 5, 6 -> System.out.println("The number is between 4 and 6");
    default -> System.out.println("The number is not between 1 and 6");
}

在这个示例中,我们使用了箭头操作符来连接多个标签,使代码更加简洁。


转型

从Java 14版本开始,switch case标签可以用于转型(casting)。这个功能被称为“Switch Expressions with Enhanced Pattern Matching”,可以让我们在使用switch case语句时,同时进行类型检查和类型转换,从而简化代码。以下是一个使用switch case标签进行转型的示例代码:

Object obj = "Hello, World!";
if (obj instanceof String str && str.length() > 0) {
    int result = switch (str.charAt(0)) {
        case 'H', 'h' -> 1;
        case 'W', 'w' -> 2;
        case '!' -> 3;
        default -> 0;
    };
    System.out.println("Result: " + result);
}

在这个示例中,我们首先使用instanceof运算符进行类型检查,并将变量obj转换为字符串类型。然后,在switch表达式中,我们使用了模式匹配来检查字符串的第一个字符,并将其转换为int类型的结果。在case标签中,我们可以同时使用多个模式,从而简化代码并提高可读性。

需要注意的是,在进行转型时,我们必须使用模式变量来进行类型检查和类型转换,否则会出现编译错误。另外,需要确保使用的Java版本支持“Switch Expressions with Enhanced Pattern Matching”这个功能。

另一个使用switch case标签进行转型的例子:

Object obj = 123;
String result = switch (obj) {
    case Integer i -> "The object is an integer with value " + i;
    case Long l -> "The object is a long with value " + l;
    case String s -> "The object is a string with value " + s;
    case Double d -> "The object is a double with value " + d;
    default -> "The object is of unknown type";
};
System.out.println(result);

在这个示例中,我们首先将一个Object类型的变量obj赋值为一个整数类型的值123。然后,我们使用switch表达式来检查变量obj的类型,并将其转换为不同的类型。在每个case标签中,我们使用模式变量来进行类型检查和类型转换,并构造一个字符串结果。如果没有匹配的标签,我们使用默认标签来返回一个未知类型的字符串结果。

Java 15 | 哎呦喂,都能定义变量了

  1. Java 15及以上版本:在Java 15及以上版本中,switch case标签引入了新的语法:使用“->”箭头操作符来将标签与代码块分开。这个新的语法使得我们可以在一个case标签中定义变量并将其作为代码块的一部分。以下是一个使用箭头操作符和新语法定义变量的示例代码:
int num = 2;
switch (num) {
    case 1 -> {
        String message = "The number is one";
        System.out.println(message);
    }
    case 2 -> {
        String message = "The number is two";
        System.out.println(message);
    }
    case 3 -> {
        String message = "The number is three";
        System.out.println(message);
    }
    default -> {
        String message = "The number is not between 1 and 3";
        System.out.println(message);
    }
}

在这个示例中,我们在每个case标签中定义了一个字符串变量message,并在代码块中使用这个变量输出消息。

Java 17 | 整数不够, 长整型来凑

  1. Java 17及以上版本:在Java 17及以上版本中,switch case标签引入了新的语法:使用“case L ->”来指定长整型标签。以下是一个使用长整型标签的示例代码:
long num = 123456789;
switch (num) {
    case 123456789L -> System.out.println("The number is 123456789");
    case 987654321L -> System.out.println("The number is 987654321");
    default -> System.out.println("The number is not known");
}

在这个示例中,我们使用长整型标签来匹配长整型变量num。

总之,随着Java版本的不断升级,switch case标签的用法也在不断发展。我们需要了解这些新的语法和功能,以便更好地使用这个语言结构。同时,我们也可以利用这些新的功能来编写更加简洁和易读的代码。

总结

Java中的switch case语句可以用于多个分支条件的判断,同时也可以用于类型检查和类型转换。在不同的Java版本中,switch case语句的用法也有所不同:

  1. Java 6及以下版本:在Java 6及以下版本中,switch case语句只能用于整数类型的判断,不能用于字符串类型和其他数据类型的判断。

  2. Java 7版本:在Java 7版本中,switch case语句引入了新的语法:使用字符串类型的值作为case标签。

  3. Java 12版本:在Java 12版本中,switch case语句引入了新的语法:使用“yield”关键字来返回结果。

  4. Java 14版本:在Java 14版本中,switch case语句引入了新的语法:使用“->”箭头操作符来将标签与代码块分开,并且可以使用模式变量来进行类型检查和类型转换。这个新的语法被称为“Switch Expressions with Enhanced Pattern Matching”。

  5. Java 15及以上版本:在Java 15及以上版本中,switch case标签引入了新的语法:使用“->”箭头操作符来将标签与代码块分开,并且可以在一个case标签中定义变量并将其作为代码块的一部分。

  6. Java 17及以上版本:在Java 17及以上版本中,switch case标签引入了新的语法:使用“case L ->”来指定长整型标签。

在Java中,模式变量被用于增强模式匹配的功能,在if语句和Switch Expressions with Enhanced Pattern Matching中都有应用。使用模式变量可以让我们更加方便地进行类型检查和类型转换,并且可以直接在if语句或switch case标签的作用域内使用相关的类型操作,从而简化代码,提高可读性和可维护性。

总之,Java中的switch case语句和模式变量是非常有用的语言特性,它们可以让我们更加方便地进行多个分支条件的判断和类型检查和类型转换,并且可以让我们的代码更加简洁和易读。随着Java版本的不断升级,我们需要了解这些新的语法和功能,以便更好地使用这个语言结构。文章来源地址https://www.toymoban.com/news/detail-404685.html

到了这里,关于超级进化吧switch case in java的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决switch case :Resource IDs will be non-final by default in Android Gradle Plugin version 8.0

    今天刚安装的最新Studio来试试手,居然在写代码的时候发现一个问题,在使用switch case语句的时候居然报错提示Resource IDs will be non-final by default in Android Gradle Plugin version 8.0,avoid using them in switch case statements,大概意思就是默认情况下,在Android Gradle插件8.0版中,资源ID将是非最终

    2024年02月10日
    浏览(35)
  • Python Switch 语句——Switch Case 示例

    在 3.10 版本之前,Python 从来没有实现 switch 语句在其他编程语言中所做的功能。 所以,如果你想执行多个条件语句,你将不得不使用elif这样的: 从 3.10 版本开始,Python 实现了一个称为“结构模式匹配”的 switch case 特性。您可以使用match和case来实现此功能。 有

    2024年02月12日
    浏览(52)
  • C语言 switch case 语句优化方案其一

                   这是一个用于计时的函数,细心的朋友应该可以发现,这段代码还隐藏一段 if 语句的优化方案,那就是 提前return,干掉else。                结构体内容如下: 当case语句较少的时候还能接收,假如很多的时候就会难以维护,这里提供一种思维。   

    2024年01月21日
    浏览(47)
  • Android中使用switch-case遇到case R.id.xxx报错

    一、问题描述           二、解决办法         在gradle.properties中加上下面四行代码:         然后点击Sync Now 三、问题解决         

    2024年04月11日
    浏览(36)
  • 【switch...case】击穿 | return和break的区别

    首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行defaul

    2024年02月08日
    浏览(35)
  • C++中使用 switch-case 进行条件处理

    switch-case 让您能够将特定表达式与一系列常量进行比较,并根据表达式的值时执行不同的操作。在这种结构中,经常会使用 C++新增的 switch、 case、 default 和 break。 switch-case 结构的语法如下: 上述代码计算 expression 的值,并将其与每个 case 标签进行比较。每个 case 标签

    2024年02月10日
    浏览(39)
  • switch语句每个case后一定要有break吗?

    java和c/c++差不多,就用java代码解释吧 先说结论:不一定要break!!! 如果case后面没有break,那么则会无视下个case的条件执行下一个case,直到再次出现一个break跳出循环 上对比代码: 代码的意思就是键盘输入一个a,如果a=1,就执行case中的内容。 我们输入1,结果是2(如图:

    2024年02月11日
    浏览(34)
  • C# switch case语句入门and业务必知点

    具体的语法形式如下。 switch(表达式) {     case 值 1:         语句块 1;         break;     case 值 2:         语句块 2;         break;         ...     default:         语句块 n;         break; } 在这里,switch 语句中表达式的结果必须是整型、字符串类型、字符型、布尔型等数据

    2023年04月21日
    浏览(56)
  • kettle开发-Day40-AI分流之case/switch

            前面我们讲到了很多关于数据流的AI方面的介绍,包括自定义组件和算力提升这块的,今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时,我们需要在数据流将类似空数据、不想要的数据

    2024年02月15日
    浏览(32)
  • C++类模板实现工厂模式(优化if else/switch case)

    引自:https://blog.csdn.net/weixin_43795921/article/details/127224633 template typename IdentifierType, class AbstractProduct, class ProductCreator = AbstractProduct *(*)(), class MapContainer = std::mapIdentifierType, ProductCreator class Factory { public: bool Register(const IdentifierType id, ProductCreator creator) { return producers_.insert(std::make

    2024年02月13日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包