代码之家  ›  专栏  ›  技术社区  ›  pgsandstrom

switch语句中何时声明引用?

  •  7
  • pgsandstrom  · 技术社区  · 14 年前

    令我惊讶的是,这段代码运行良好:

    int i = 2;
    switch(i) {
    case 1:
        String myString = "foo";
        break;
    case 2:
        myString = "poo";
        System.out.println(myString);
    }
    

    2 回复  |  直到 14 年前
        1
  •  7
  •   Noon Silk    14 年前

    好吧,这是关于括号(即范围)。

    int i = 2;
    switch(i) {
        case 1: {
            String myString = "foo";
            break;
        }
        case 2: {
            myString = "poo";
            System.out.println(myString);
        }
    }
    

    (我现在不在Java编译器附近,但它不应该编译)。

        2
  •  3
  •   Gerco Dries    14 年前

    myString声明的作用域是switch块(其中{字符是)。如果你是这样写的,声明将是每个案件:

    int i = 2;
    switch(i) {
        case 1: {
            String myString = "foo";
            break;
        }
    
        case 2: {
            String myString = "poo";
            System.out.println(myString);
        }
    }