栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java开关中声明和初始化变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java开关中声明和初始化变量

基本上,switch语句的作用域很奇怪。从JLS的6.3节开始:

块中的局部变量声明的范围(第14.4节)是该声明在其中出现的其余部分,从其自身的初始化程序开始,并在局部变量声明语句的右侧包括其他任何声明符。

在您的情况下,即使永远不会执行,它也与它

case 2
位于同 一块中
case 1
并在其后出现
case1
……因此,即使您从逻辑上也从未“执行”该声明,该局部变量仍在范围内并且可用于 编写 。(尽管声明是初始化的,但它并不是真正的“可执行文件”。)

如果您注释掉该

value =2;
赋值,编译器仍会知道您所指的是哪个变量,但是您将不会经历任何为其赋值的执行路径,这就是为什么您尝试执行此操作时会收到错误的原因读取其他任何未明确分配的局部变量。

我强烈建议您 不要 使用在其他情况下声明的局部变量-如您所见,这会导致代码非常混乱。当我在switch语句中引入局部变量时(我很少尝试这样做-
理想情况下,情况应该很短),我通常更喜欢引入新的作用域:

case 1: {    int value = 1;    ...    break;}case 2: {    int value = 2;    ...    break;}

我相信这很清楚。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号