使用if语句之外的变量

时间:2012-11-12 02:06:46

标签: java if-statement scope

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

2 个答案:

答案 0 :(得分:11)

你不能因为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";
}

答案 1 :(得分:3)

您需要区分变量声明赋值

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";
}