gpt4 book ai didi

java - 为什么一个 String 需要初始化,即使赋值会在后面发生?

转载 作者:行者123 更新时间:2023-11-29 10:12:56 24 4
gpt4 key购买 nike

我收到以下代码的“局部变量字符串可能尚未初始化”错误。代码本身没有意义,它只是为了练习而编写的。

public class StringExercise
{
public static void main(String[] args)
{
String string; // initializing here fixes the issue
for (int i = 0; i < 10; ++i)
{
if( (i % 4) == 2 )
{
string = "Number: " + i;
}
}
System.out.println(string); // this is marked as wrong by Eclipse
}
}

要使其正常工作,只需按照上面评论中的说明初始化 String。

我的问题是为什么需要它? println 方法永远不会被赋予 null 并且初始化将在循环中的条件第一次返回 true 时发生。我是在做错什么,还是只是 Java 对程序员的错误过于谨慎?如果是后者,从理论上讲如何证明?

最佳答案

My question is why is it needed?

因为即使您的代码是“逻辑上”编写的,因此 string 确实会在循环中初始化,但编译器并不知道。它所看到的是:

for (loop; elements; here)
if (someCondition)
string = something;

简而言之:编译器不会检查代码的逻辑;它仅足够智能以检查语法错误,但在那之后,字节码生成本身就是“愚蠢的”。

并且由于 Java 要求所有变量在使用前进行初始化,因此您会收到此编译器错误。

关于java - 为什么一个 String 需要初始化,即使赋值会在后面发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983784/

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