gpt4 book ai didi

java - 局部变量未初始化,但仍在编译程序

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:11 26 4
gpt4 key购买 nike

public class Test {

public static void main(String[] args) {
System.out.println("started");
//func();

}

static void func(){
double d;
int i;
System.out.println("d ="+d);
System.out.println("i ="+i);
}

}

我知道的事实是局部变量必须在使用前初始化。这里的 di 是局部变量。你可以看到我还没有初始化它们。 为什么我的程序还能编译运行?

如果我取消对 func() 的注释,则会出现编译错误。

最佳答案

如果你使用javac编译它,它不会编译:

stephen@blackbox tmp]$ cat > Test.java
public class Test {

public static void main(String[] args) {
System.out.println("started");
//func();

}

static void func(){
double d;
int i;
System.out.println("d ="+d);
System.out.println("i ="+i);
}

}
[stephen@blackbox tmp]$ javac Test.java
Test.java:12: error: variable d might not have been initialized
System.out.println("d ="+d);
^
Test.java:13: error: variable i might not have been initialized
System.out.println("i ="+i);
^
2 errors
[stephen@blackbox tmp]$

我的猜测是您正在使用 IDE,并且您在过去的某个时刻告诉 IDE 可以尝试运行存在编译错误的程序。这是通过将具有编译错误的方法“编译”成字节码来实现的,这些字节码在调用时会抛出异常。当您注释掉对错误方法的调用时,它不会被调用……自然地……并且不会抛出异常。

但底线是您确实遇到了编译错误。您只是告诉 IDE 忽略它。


解决方案很明显。修复编译错误。

关于java - 局部变量未初始化,但仍在编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33408432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com