以下方法无法在Java中执行,因为变量i
在使用时可能保持未初始化状态。这是语法或语义问题吗?
public int odd( boolean b ){
int i;
if( b ){ i = 3;}
return i;
}
我会认为这是语义,但根据我的讲师,这是一个语法错误。这是正确的,为什么?
答案 0 :(得分:8)
这是Java编译器检测到的错误,但不语法错误;根据Java语法,它完全有效。它在分析的后期阶段被检测到,使其成为语义错误。
也就是说,听起来你的教师想要将任何编译器错误定义为语法错误,并且可能希望“语义错误”表示在运行时出错的东西。由于教练对作业进行评分,因此您不得不接受他的定义(即使它们完全错误,就像在这种情况下一样;)。)
答案 1 :(得分:0)
Java有一个严格定义的语法来声明局部变量,在你的代码示例中你没有遵循它。
所以在java中,它变成了语法错误。
请参阅:http://c2.com/cgi/wiki?SyntaxVsSemantics
并且:http://wiki.answers.com/Q/What_are_the_Differences_between_syntax_and_semantic_error