我不完全确定这在 Java 中是否可行,但是我将如何在声明它的 if 语句之外使用在 if 语句中声明的字符串?
问问题
42709 次
2 回答
19
你不能因为变量范围。
如果您在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";
}
于 2012-11-12T02:14:49.510 回答
5
您需要区分变量声明和赋值。
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";
}
于 2012-11-12T02:16:48.623 回答