博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在switch中的case语句中声明变量会被提前
阅读量:6479 次
发布时间:2019-06-23

本文共 786 字,大约阅读时间需要 2 分钟。

原文链接:http://my.oschina.net/u/2000201/blog/514384

本人今天在编写工具类时,无意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了一个奇怪的问题。

废话少说,先列出例子,一看便知。

情景一:case 1中声明变量x,case 2中不能再声明变量x

switch (1) {

        case 1:

            int x = 1;

            break;

        case 2:

            int x = 2;// 编译器会提示:Duplicate local variable x

            break;

}

如是,我猜测是不是因为case 1和case 2都在switch的块中,所以case 1和case 2共享本地变量。如是,我便提出第二种假设。

情景二:case 1中声明变量x,case 2中直接使用变量x

switch (2) {

        case 1:

            int x = 1;

            break;

        case 2:

            System.out.println(x);// The local variable x may not have been initialized

            break;

}

情景二的结果说明,case 1中x被提前声明,但是没有进行case 1中指定的赋值操作。初步可以得出结论,case语句中的局部变量声明会被提前。如是对情景二的代码稍加修改。

情景三:case 1声明x变量,case 2赋值并使用

switch (2) {

        case 1:

            int x = 1;

            break;

        case 2:

            x = 2;

            System.out.println(x);// 正常输出2

            break;

}

由此可见,进一步证明case中声明局部变量的语句会被提前。

转载于:https://www.cnblogs.com/ieayoio/p/5315808.html

你可能感兴趣的文章
原生Js交互之DSBridge
查看>>
Matlab编程之——卷积神经网络CNN代码解析
查看>>
白洋淀周末游
查看>>
三篇文章了解 TiDB 技术内幕 —— 说计算
查看>>
copy strong weak assign的区别
查看>>
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
传统运维团队转型应该注意哪些问题?
查看>>
JavaScript函数(二)
查看>>
Airbnb改进部署管道安全性,规范部署顺序
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>