首页 > 其他分享 >能在 Switch 中使用 String 吗?

能在 Switch 中使用 String 吗?

时间:2023-07-28 14:33:45浏览次数:33  
标签:case String Switch switch 使用 字符串 null

从 Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法糖。内部实现在 switch 中使用字符串的 hash code。

 

 

 

在Java 7中,switch开始支持String类型。

 

从本质来讲,switch对字符串的支持,其实是int类型值得匹配。

 

其实现原理为:通过对case后面的String对象调用hashCode()方法,得到一个int类型的hash值,然后用这个hash值来唯一标识这个case。

如果匹配,接着会调用字符串的String.equals()方法进行匹配,如果没有匹配成功,说明不存在。

 

String变量不能为null,同时,switch的case子句中使用的字符串也不能为null。

使用switch语句时,String类型的参数必须是非空的。

如果fruitnull,则会引发NullPointerException

因此,在使用switch语句之前,请确保参数不为null,或者在使用switch之前添加适当的空值检查。

标签:case,String,Switch,switch,使用,字符串,null
From: https://www.cnblogs.com/Sweetp/p/17587501.html

相关文章

  • mysql 的左连结 右边结 内连结 外连结和全连结的区别及使用场景举例
    在MySQL中,左连接(LEFTJOIN)、右连接(RIGHTJOIN)、内连接(INNERJOIN)、外连接(OUTERJOIN)和全连接(FULLJOIN)是常用的连接操作,用于联接多个表。这些连接操作的区别如下:左连接(LEFTJOIN):返回左表中的所有记录,以及与右表中匹配的记录。如果右表没有匹配的记录,则返回NULL值。左连接使用L......
  • 云原生|kubernetes|安全漏扫神器trivy的部署和使用
    前言:云原生领域内的安全漏扫工具有clair和trivy是比较常用的,而安全漏扫工具是可以和harbor这样的私有仓库集成的,自harbor-1.21版以后都是默认使用trivy这个漏扫工具的,而在此之前是使用clair的。那么,本文将就什么是trivy,trivy如何正确的部署,如何正确的使用做一个简单的探讨。一,......
  • mysql中子查询和连接操作的使用场景和区别是什么?请举例说明?
    MySQL中的子查询和连接操作都是用于联接多个表或查询结果,但它们有不同的使用场景和区别。子查询是指在一个查询中嵌套另一个查询,内部查询的结果作为外部查询的条件或数据源。子查询通常用于获取特定条件下的数据,或者用于计算某个字段的值。连接操作是指通过联接多个表来获取相关......
  • mysql中in的使用场景及用法举例说明?
    在MySQL中,IN运算符用于在WHERE子句中指定一个条件,以便从一个给定的列表中选择满足条件的值。IN运算符可以用于任何数据类型,包括数字、字符串和日期。下面是IN运算符的使用场景和用法的示例说明:使用IN运算符筛选特定值:查询订单表中订单状态为"已发货"或"已完成"的订单:SELECT......
  • Mysql高级4-索引的使用规则
    一、最左前缀法则如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列,如果跳跃某一列,索引将部分失效(后面的字段索引失效)示例1:account_transaction表中创建一个联合索引,使用method字段+trader_staff_id字段+operat......
  • # mac 使用 Docker 部署Python服务和web app服务最佳实践~保姆级教程
    目录部署Python后端服务部署python服务最佳实践部署web前端应用Docker同步到另一台设备部署Python后端服务部署python服务拉取python镜像dockerpullpython:3.9.13查看镜像dockerimages运行容器dockerrun-p9000:8080-it--namepytest-v~/PycharmPr......
  • 3-使用@task设置测试用例执行的权重
    多个测试链路压测使测试任务按预想的比例执行locust的@task装饰器提供了入参weight,locust执行测试任务时,会根据weight的比例进行分配用户数fromlocustimporttask,HttpUserclassMyTestUser(HttpUser):#test_01:test_02=3:1@task(3)defweight_tes......
  • 【MFC】CSingleLock的使用
    转载文章:CSingleLock的使用//先看看其代码://声明classCSingleLock{//Constructorspublic:CSingleLock(CSyncObject*pObject,BOOLbInitialLock=FALSE);//Operationspublic:BOOLLock(DWORDdwTimeOut=INFINITE);BOOLUnlock(......
  • Three.js使用InstancedMesh实现性能优化
    1.引言有这么一种场景:需要渲染一座桥,桥有很多桥柱,桥柱除了位置与倾斜角度不完全相同外,其他均相同,由于桥柱数量很大,使用three.js绘制较为卡顿,如何优化?注意,要求后续能选中某个桥柱2.概念2.1合并几何体three.js官方教程里提到,大量对象的优化-three.jsmanual(threejs.org),......
  • LibGdx 游戏引擎 freetype 使用指南
    网上大多数的Libgdx文档,使用的版本都是0.9X的时候留下的,1.X版本的比较少。freetype在1.X时使用发生发生了变化,写一下变化。本人使用的是Libgdx1.6版本。首先给两个传送门,可以去Git上看官方的wiki。官方的freetype说明https://github.com/libgdx/libgdx/wiki/Gdx-freetype官方的......