这很难解释,但请耐心等待:
比如说,我有一个if语句执行以下操作,是否可以在if语句之外使用变量x2
:
int x = 3
if(x>2.5) {
String x2 = "X =" + Double.toString(x);
}
//How do I use the x2 outside the if function?
System.out.println(x2);
每次我尝试这样做时,Eclipse都会强调它,并说该变量尚未定义,我收集的是因为x2
可能无法创建x<=2.5
,因此不会输出任何内容
我问这个的原因是因为我正在尝试制作一个程序,如果(条件为true
)将一组变量通过电子邮件发送给我。
但是,如果条件为真,我可以将电子邮件代码放在外面,而不是在if语句中输入用于通过电子邮件发送数据的代码(我有大约20个),并获得20封不同的电子邮件。这样,所有20个变量将在一封电子邮件中发送,如果条件适用于所有这些变量。
我希望这是有道理的;如果您有任何问题,请发表评论。
答案 0 :(得分:2)
你不能。你必须在if块之前声明它,以便在它之后使用它。
String x2 = null;
if(x>2.5){
x2 = "X =" + Double.toString(x);
}
System.out.println(x2);
答案 1 :(得分:2)
不,您不能使用已在声明的块之外声明的变量,但您可以使用该对象。引用变量和对象是不同的野兽。虽然你的问题与此无关,但在你的情况下,我只是在循环之前声明变量:
int x = 3
String x2 = "";
if(x>2.5){
x2 = "X =" + Double.toString(x);
}
//How do I use the x2 outside the if function?
System.out.println(x2);
答案 2 :(得分:1)
在您希望使用它的范围内声明变量,通过所有使用路径明确地分配。确定的可分配性和可达性是在JLS中以非人类友好的方式定义的,但是开发了直觉&#34;因为它相对容易(除if
语句中的常量表达式[不是函数])。
int x = 3;
final String x2;
if (x > 2.5) {
x2 = "X =" + Double.toString(x);
} else {
x2 = "X out of bounds";
}
System.out.println(x2);
(final
向读者和编制者表明x2
只被分配一次。)