[英]What type of error occurs when using an uninitialized variable?
我认为以下Java代码会引起RuntimeError(从技术上来说),因为它引用的内容不存在(就像访问大小为5的数组中的第8个元素一样)。
int i;
System.out.println(i);
但是,IDE会捕获它,并在红色下划线。 这会使它成为语法/编译器错误吗? 还是IDE足够聪明可以捕获的运行时错误?
实际上,这是编译器错误,但从技术上来讲不是语法错误吗? 我一直认为它们是同义词,但是语法错误可能只是一种编译器错误...
我知道这只是语义,但是我正在教一门课,但很愚蠢,不知道它在技术上是什么类型的错误。
如果int i;
正在声明局部变量,在将其分配给它之前使用它是编译错误; 有关JLS的相关部分,请参见@Eran的答案。
编译错误和编译时错误是同义词。 (编译器错误是另一个同义词,尽管有时人们会用它来指代编译器中的错误。)
这会使它成为语法/编译器错误吗?
这是一个编译错误。 但这不是语法错误。
这种类型的编译错误通常称为语义错误 。
语法错误表示代码不符合该语言的指定语法(由语法定义)。 换句话说,解析器无法解析它。
语义错误是任何不是语法错误的编译错误。 取决于编程语言,语义错误可能包括以下内容:
还是IDE足够聪明可以捕获的运行时错误?
这不是运行时错误。
实际上,这是编译器错误,但从技术上来讲不是语法错误吗?
正确。
我一直认为它们是同义词,但是语法错误可能只是一种编译器错误...
它们不是同义词。 语法错误只是一种编译错误。
(不幸的是,某些Javascript实现将所有编译错误都称为“语法错误”。但是,如果您在教Java,则无关紧要。Java不是Javascript。)
您是否尝试过在没有IDE的情况下进行编译?
在Java中,它被检测为编译时错误,提示: 错误:变量i可能尚未初始化
这是简单的运行时错误。 IDE会指出这一点,但是如果您运行它,将会收到一些错误,例如我需要初始化
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.