zoukankan      html  css  js  c++  java
  • 在switch中的case语句中声明变量会被提前

    原文链接: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中声明局部变量的语句会被提前。

  • 相关阅读:
    Python3安装
    HTML基础
    Python Socket
    python常用模块
    JSON.stringify的三个参数
    判断数组中存在重复元素
    vant-ui表单验证
    如何计算出浏览器的帧数?requestAnimationFrame
    js判断两个区间是否存在交集
    怎么在组件内部判断出是否插入了slot
  • 原文地址:https://www.cnblogs.com/ieayoio/p/5315808.html
Copyright © 2011-2022 走看看