持续总结中!2024年面试必问 100 道 Java基础面试题(二十一)

devtools/2025/1/23 9:30:32/

上一篇地址:持续总结中!2024年面试必问 100 道 Java基础面试题(二十)-CSDN博客

四十一、switch是否能用在String上?

在Java中,switch语句可以使用String类型的变量。从Java 7开始,switch语句的表达式不再仅限于原始数据类型(如intchar等),而是可以处理字符串和其他对象类型。

使用字符串的 switch 语句

在Java 7及以后的版本中,可以使用String类型的变量作为switch语句的表达式。这使得处理基于字符串的条件逻辑变得更加方便和直观。

示例代码

java">public class StringSwitchExample {public static void main(String[] args) {String operation = "add";switch (operation) {case "add":System.out.println("Operation is addition.");break;case "subtract":System.out.println("Operation is subtraction.");break;case "multiply":System.out.println("Operation is multiplication.");break;case "divide":System.out.println("Operation is division.");break;default:System.out.println("Unknown operation.");break;}}
}

在这个示例中,我们定义了一个名为operationString变量,并使用它作为switch语句的表达式。switch语句根据operation的值来决定执行哪个case分支。

注意事项

  1. 字符串相等性switch语句中使用的String对象是通过equals()方法来比较的,这意味着字符串比较是区分大小写的。

  2. 性能:虽然使用字符串的switch语句在很多情况下都是合适的,但在某些对性能要求极高的场景下,可能需要考虑使用其他数据结构或算法,如哈希表(HashMap)。

  3. 可读性:使用字符串的switch语句可以提高代码的可读性和简洁性,尤其是在处理多个基于字符串的条件分支时。

  4. Java版本兼容性:确保使用的Java版本支持字符串在switch语句中的使用。Java 7及以后的版本都支持这一特性。

总结来说,Java中的switch语句可以使用String类型的变量,这为处理基于字符串的条件逻辑提供了一种方便和直观的方式。然而,开发者应当注意字符串比较的相等性和性能问题,并确保使用的Java版本兼容。

四十一、switch case支持哪几种数据类型?

在Java中,switch语句的表达式可以是几种特定的数据类型。以下是switch语句支持的数据类型:

  1. 基本数据类型

    • byte
    • short
    • char
    • int(从Java 12开始,int也支持表达式模式匹配)
  2. 字符串(String)

    • 从Java 7开始,switch语句支持字符串类型的表达式。
  3. 枚举(Enum)类型

    • 枚举类型是从java.lang.Enum类派生的,switch语句可以很好地与枚举类型一起使用。
  4. 类对象(如通过instanceof操作符的模式匹配,Java 14及以上版本):

    • 从Java 14开始,switch语句引入了模式匹配(JEP 305: Pattern Matching for instanceof),允许对实例进行类型检查和转换。

示例代码

java">public class SwitchExample {public static void main(String[] args) {int num = 2;String str = "Hello";Day day = Day.MONDAY;switch (num) {case 1:System.out.println("One");break;case 2:System.out.println("Two");break;default:System.out.println("Other");}switch (str) {case "Hello":System.out.println("Greeting");break;case "World":System.out.println("Common word");break;default:System.out.println("Unknown string");}switch (day) {case MONDAY:System.out.println("It's Monday");break;case TUESDAY:System.out.println("It's Tuesday");break;default:System.out.println("Other day");}// Java 14及以上版本的模式匹配示例Object obj = Day.MONDAY;if (obj instanceof Day dayEnum) {switch (dayEnum) {case MONDAY:System.out.println("It's a Monday instance");break;// ... other cases}}}
}enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

在这个示例中,我们展示了switch语句可以处理整数、字符串和枚举类型的表达式。最后一个示例展示了如何在Java 14及以上版本中使用模式匹配。

注意事项

  • switch语句不支持longfloatdoubleboolean等基本数据类型,也不支持类类型的其他对象。
  • 从Java 12开始,可以对int类型的表达式使用模式匹配(JEP 361: Switch Expressions (Second Preview))。
  • 枚举类型非常适合用于switch语句,因为它们提供了一组有限的常量值,这与switch语句的设计初衷相匹配。
  • Java的模式匹配是语言发展的趋势,它提供了一种更灵活、更安全的方式来处理类型检查和转换。

总结来说,switch语句在Java中支持基本的整数类型、字符串和枚举类型。随着Java版本的更新,switch语句的功能也在不断扩展,提供了更丰富的模式匹配能力。


http://www.ppmy.cn/devtools/27166.html

相关文章

Spark-机器学习(6)分类学习之支持向量机

在之前的文章中,我们学习了分类学习之朴素贝叶斯算法,并带来简单案例,学习用法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢…

Java设计模式 _结构型模式_装饰器模式

一、装饰器模式 1、装饰器模式 装饰器模式(Decorator Pattern)是一种结构型设计模式。允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰器模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性…

安卓中级控件(图形、选择按钮、文本输入、对话框)

图形定制 图形Drawable Android把所有能够显示的图形都抽象为Drawable类(可绘制的)。这里的图形不止是图片,还包括色块、画板、背景等。 包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录一般保存描述性…

goget配置多个golang 运行环境

一台主机安装多个golang 运行环境 本环境 windows10 为 基础 mac linux也可以按照此方法操作 背景 开发不同的运维工具会用到不同版本的golang,但是开发者不能一直进行重装来处理 ,因此 需要一个工具进行golang版本的管理 go管理工具介绍 gvm (Go V…

高德地图API入门使用vue

文章目录 最终效果一、在高德的开放平台申请key二、下载依赖:三、完整代码 最终效果 页面显示高德地图 一、在高德的开放平台申请key 在高德的开放平台申请key: https://console.amap.com/dev/key/app 申请的类型为web端(js api&#xff…

k8s学习(三十七)centos下离线部署kubernetes1.30(高可用)

文章目录 准备工作1、升级操作系统内核1.1、查看操作系统和内核版本1.2、下载内核离线升级包1.3、升级内核1.4、确认内核版本 2、修改主机名/hosts文件2.1、修改主机名2.2、修改hosts文件 3、关闭防火墙4、关闭SELINUX配置5、时间同步5.1、下载NTP5.2、卸载5.3、安装5.4、配置5…

如何在Linux服务器上安装Stable Diffusion WebUI

如何在Linux服务器上安装Stable Diffusion WebUI 一、前提条件1、硬件条件2、软件条件 二、安装步骤1、创建Python虚拟环境2、安装必要的软件和库3、克隆Stable Diffusion WebUI仓库4、安装依赖5、运行6、访问WEB UI 一、前提条件 1、硬件条件 GPU:显存肯定越大越…

Ubuntu 4G模块域名ping不通

Ubuntu 4G模块域名ping不通 1. 问题2. 解决办法 1. 问题 Ubuntu 用4G模块上网,ping ip可以,但是 域名 ping 不通 查了网络和DNS解析配置都没问题 2. 解决办法 关闭调制解调管理器 stop systemctl stop ModemManager stop systemctl disable ModemMana…