我能够将值分配给静态变量,但无法在同一静态块中将其打印出来。
如果我将静态变量移到静态块上方,则一切正常。现在,我无法遵循代码的执行顺序。该代码在Java中运行。
class ExampleStatic{
static {
cokePrice=12;
System.out.println("Coke Price is: R"+cokePrice);
}
static int cokePrice;
public static void main(String[] args) {
}
}
我希望打印可乐价格的输出是:R12。但是,错误提示:在定义字段之前无法引用该字段。
答案 0 :(得分:1)
只需更改cokePrice
变量的位置。
static int cokePrice;
static {
cokePrice=12;
System.out.println("Coke Price is: R"+cokePrice);
}
这种情况不仅限于System.out.print
,还涉及Java的限制。它允许在静态方法中使用变量,而无需初始化它,除非您将其用作右手赋值。如果将其用作左手分配,则很安全。
static int cokePrice;
static {
cokePrice=12;
int x = cokePrice;
}
static int cokePrice;
这也会产生错误,因为我们将其用作右手分配。为了安全起见,请在静态块之前初始化变量,或者不要将其用作右手赋值。我希望这可以澄清您的想法。
答案 1 :(得分:0)
这是因为“非法转发参考”
表示您在定义变量之前尝试使用它。
尝试
static int cokePrice;
static {
cokePrice=12;
System.out.println("Coke Price is: R"+cokePrice);
}
答案 2 :(得分:0)
您需要将静态块内的变量声明为局部变量。 像这样的东西
nvm.sh