相关疑难解决方法(0)

在Java交换机中声明和初始化变量

我有一个关于Java交换机的疯狂问题.

int key = 2;

switch (key) {
    case 1:
        int value = 1;
        break;
    case 2:
        value = 2;
        System.out.println(value);
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

场景1 - 当它key为2时,它成功地将值打印为2.
场景2 - 当我要在其中发表评论value = 2case 2:,说出该局部变量值可能尚未初始化.

问题:

场景1:如果执行流程没有进入case 1:(当时key = 2),那么它如何知道值变量的类型为int

场景2:如果编译器知道值变量的类型int,则必须访问.中的int value = 1;表达式case 1:.(声明和初始化).那么为什么sqawrk当我要评论value = 2case 2:,说本地变量值可能没有被初始化.

java scope initialization declaration switch-statement

92
推荐指数
4
解决办法
1万
查看次数

开关盒中的变量范围

我想我不明白示波器如何在开关盒中工作.

有人可以向我解释为什么第一个代码不编译但第二个代码没有编译?

代码1:

 int key = 2;
 switch (key) {
 case 1:
      String str = "1";
      return str;
 case 2:
      String str = "2"; // duplicate declaration of "str" according to Eclipse.
      return str;
 }
Run Code Online (Sandbox Code Playgroud)

代码2:

 int key = 2;
 if (key == 1) {
      String str = "1";
      return str;
 } else if (key == 2) {
      String str = "2";
      return str;
 }
Run Code Online (Sandbox Code Playgroud)

为什么变量"str"的范围不包含在案例1中?

如果我跳过案例1的声明,则永远不会声明变量"str"...

java switch-statement

91
推荐指数
3
解决办法
3万
查看次数