【问题标题】:Using variables outside of an if-statement在 if 语句之外使用变量
【发布时间】:2012-10-31 12:16:46
【问题描述】:

我不完全确定这在 Java 中是否可行,但是我将如何在声明它的 if 语句之外使用在 if 语句中声明的字符串?

【问题讨论】:

  • 声明if之前的字符串?需要一些代码来澄清您的要求!
  • 除非将其分配给在变量外部声明的变量,否则您不能这样做。也许您可以发布您遇到问题的部分代码,我们可以为您提供帮助。

标签: java if-statement scope


【解决方案1】:

你不能因为variable scope

如果您在 if 语句中定义变量,那么它只会在 if 语句的范围内可见,其中包括语句本身和子语句。

if(...){
   String a = "ok";
   // a is visible inside this scope, for instance
   if(a.contains("xyz")){
      a = "foo";
   }
}

您应该在范围之外定义变量,然后在if 语句中更新其值。

String a = "ok";
if(...){
    a = "foo";
}

【讨论】:

  • 这会起作用,但我需要按照在 if 语句之外的 if 语句中定义的方式使用字符串...如果这有意义的话。
  • 用一些默认值初始化它们,比如 null,在 if 块中更新它们,然后在块外使用它们时,它们将具有正确的值;您还可以检查它们的值是否保持默认值。
【解决方案2】:

你需要区分变量声明赋值

String foo;                     // declaration of the variable "foo"
foo = "something";              // variable assignment

String bar = "something else";  // declaration + assignment on the same line

如果你尝试使用一个没有赋值的声明变量,比如:

String foo;

if ("something".equals(foo)) {...}

你会得到一个编译错误,因为变量没有被分配任何东西,因为它只是被声明的。

在您的情况下,您在条件块中声明变量

if (someCondition) {
   String foo;
   foo = "foo";
}

if (foo.equals("something")) { ... }

所以它仅在该块内“可见”。您需要将该声明 移出 并以某种方式为其赋值,否则您将收到条件赋值编译错误。一个例子是使用else 块:

String foo;

if (someCondition) { 
   foo = "foo";
} else {
   foo = null;
}

或在声明时指定一个默认值(null?)

String foo = null;

if (someCondition) {
   foo = "foo";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多