java14 使用增强的模式匹配切换表达式

这篇具有很好参考价值的文章主要介绍了java14 使用增强的模式匹配切换表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

野旷天低树,江清月近人。——唐代杜甫《月夜忆舍弟》

使用增强的模式匹配切换表达式(Switch Expressions with Enhanced Pattern Matching)

Java 14中引入的“Switch Expressions with Enhanced Pattern Matching”这个功能。

这个功能可以让我们在使用switch case语句时,同时进行类型检查和类型转换,从而简化代码。在之前的Java版本中,我们通常需要使用if-else语句或类型转换操作符来进行类型检查和类型转换。而在Java 14中,我们可以使用模式匹配(pattern matching)来进行这些操作,使得代码更加简洁和易读。

在使用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 Expressions with Enhanced Pattern Matching”这个功能可以让我们更加方便地进行类型检查和类型转换,从而简化代码,提高代码的可读性和可维护性。

模式变量(pattern variable)

在Java 14中,模式变量被引入以增强模式匹配的功能,从而简化代码并提高可读性。当我们在if语句中使用instanceof运算符进行类型检查时,可以使用模式变量来同时进行类型转换,并且在if语句的作用域内,我们可以直接使用这个变量进行类型相关的操作。

以下是一个使用模式变量的示例代码:

Object obj = "Hello, World!";
if (obj instanceof String str && str.length() > 0) {
    System.out.println("The length of the string is " + str.length());
}

在这个示例中,我们首先使用instanceof运算符进行类型检查,并将变量obj转换为字符串类型。同时,我们在if语句的条件中使用了模式变量str,表示这个变量是一个字符串类型的变量,并将变量obj转换为了这个类型。在if语句的作用域内,我们可以直接使用这个变量来调用字符串类型的方法length(),从而获取字符串的长度。

需要注意的是,模式变量只能在if语句的条件中定义,并且不能重新赋值。同时,模式变量的作用域只限于if语句的作用域内。如果需要在其他作用域内使用这个变量,可以将其赋值给一个其他的变量。

总之,模式变量是Java 14中引入的一个新的功能,可以让我们更加方便地进行类型检查和类型转换,并且可以直接在if语句的作用域内使用相关的类型操作,从而简化代码,提高可读性和可维护性。

Switch Expressions with Enhanced Pattern Matching底层也是利用模式变量

Switch Expressions with Enhanced Pattern Matching底层也是利用模式变量实现的。在Switch Expressions with Enhanced Pattern Matching中,我们可以使用模式变量来进行类型检查和类型转换,并且可以在switch case标签中定义多个模式。

以下是一个使用模式变量的Switch Expressions with Enhanced Pattern Matching示例代码:

Object obj = "Hello, World!";
String result = switch (obj) {
    case String str && str.length() > 0 -> {
        yield "The string has length " + str.length();
    }
    case Integer i -> {
        yield "The object is an integer with value " + i;
    }
    default -> {
        yield "The object is of unknown type";
    }
};
System.out.println(result);

在这个示例中,我们首先定义了一个Object类型的变量obj,并在switch表达式中对这个变量进行模式匹配。在第一个case标签中,我们使用模式变量str来进行类型检查和类型转换,并检查字符串的长度。如果满足条件,我们使用yield返回一个字符串结果。在第二个case标签中,我们使用模式变量i来进行类型检查和类型转换,并返回一个字符串结果。在default标签中,我们返回一个未知类型的字符串结果。

需要注意的是,Switch Expressions with Enhanced Pattern Matching只能在Java 14及以上版本中使用,因为它是在Java 14中引入的一个新的功能。同时,模式变量的作用域只限于switch表达式的作用域内。

总之,Switch Expressions with Enhanced Pattern Matching底层也是利用模式变量实现的,它可以让我们更加方便地进行类型检查和类型转换,并且可以在switch case标签中定义多个模式,从而简化代码,提高可读性和可维护性。文章来源地址https://www.toymoban.com/news/detail-401306.html

到了这里,关于java14 使用增强的模式匹配切换表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java 正则表达式匹配

    正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串(text/string),它会以定义的模式从左到右匹配文本,每个源字符只匹配一次。 正则表达式 匹配 this is text 精确匹配

    2024年02月06日
    浏览(42)
  • 【23JavaScript 正则表达式】深入解析JavaScript正则表达式:基础概念、常用方法和实例详解,轻松掌握强大的文本模式匹配工具

    正则表达式是一种强大的文本模式匹配工具,用于在字符串中搜索和操作特定的文本模式。在JavaScript中,正则表达式提供了一种灵活的方式来处理字符串操作。 在JavaScript中,可以通过使用字面量表示法或RegExp对象来创建正则表达式。 字面量表示法 RegExp对象 JavaScript中的正则

    2024年02月08日
    浏览(48)
  • Java正则表达式匹配aabb、abab格式字符

    我们开发过程中,经常用到正则表达式来匹配想要的字符串,或者从一段文本中提取想要的,比如爬虫应用等。正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅jav

    2023年04月22日
    浏览(33)
  • Java_正则表达式_14

    正则表达式的作用: 是一些特殊字符组成的校验规则,可以校验信息的正确性,校验邮箱是否合法,电话号码,金额等。 需求:演示不用正则表达式和用正则表达式校验QQ号码。 小结: 正则表达式很适合做校验,代码简单,优雅! 字符类 [abc] a、b 或 c(简单类) [^abc] 任何

    2024年02月11日
    浏览(25)
  • Java 基础进阶篇(十八):正则表达式匹配规则和应用

      正则表达式是对字符串(包括普通字符(例如:a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正

    2024年02月13日
    浏览(43)
  • Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】

    非贪婪匹配的元字符是问号 ?  当此字符跟在任何其他限定符(*、+、?、{n}、{m}、{n,m})之后,匹配模式是 \\\"非贪心的\\\"。非贪心的意思就是每次匹配搜索到的尽可能短的字符串, 可以是0个 。 对比贪婪匹配和非贪婪匹配 贪婪匹配 输出结果: 非贪婪匹配 输出结果: 对字符串

    2024年02月13日
    浏览(34)
  • java正则表达式匹配替换大括号变量${}和替换${}变量的值

    java正则表达式替换“$ {}”特殊字符并还原,以及java正则表达式替换${}变量为变量的值这两种操作的代码示例。 正则表达式还是非常有用的, 可以耐心看下定义,多尝试下。 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将

    2024年02月02日
    浏览(49)
  • hive中使用正则表达式匹配数字

    2024年02月14日
    浏览(34)
  • 【无标题】华为OD机试 - 表达式括号匹配(Java & JS & Python & C & C++)

    哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 (1+(2+3)*(3+(8+0))+1-2)这是一个简单的数学表达式,今天不是计算它的值,而是比较它的括号匹配是否正确。 前面这个式子可以简化为(()(()))这样的括号我们认为它是匹配正确的, 而((()

    2024年04月09日
    浏览(66)
  • 【算法】使用栈解决一系列算法题(匹配、表达式、模拟)(C++)

    栈适合解决需要 后进先出(LIFO) 的结构的算法题,例如: 括号匹配问题 :判断给定字符串中括号是否匹配。 表达式求值问题 :将表达式转换为后缀表达式,并计算其值。 逆波兰表达式问题 :将表达式转换为逆波兰表达式,并计算其值。 直方图最大矩形面积问题 :给定

    2024年01月16日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包