语法或语义问题?

Ade*_*eeb 5 java syntax semantics

以下方法无法在Java中执行,因为该变量在使用时i可能保持未初始化状态.这是语法或语义问题吗?

public int odd( boolean b ){
    int i;
    if( b ){ i = 3;}
    return i;
}
Run Code Online (Sandbox Code Playgroud)

我以为它会是语义,但根据我的讲师,这是一个语法错误.这是正确的,为什么?

Ern*_*ill 8

这是Java编译器检测到的错误,但它不是语法错误; 根据Java语法,它完全有效.它在分析的后期阶段被检测到,使其成为语义错误.

也就是说,听起来你的教师想要将任何编译器错误定义为语法错误,并且可能希望"语义错误"表示在运行时出错的东西.由于教练对作业进行评分,因此您不得不接受他的定义(即使它们完全错误,就像在这种情况下一样;)).