Java 为什么编译器没有引发错误?
我刚刚发现我的编译器允许我写下面的代码,并且没有引起任何编译时错误。谁能给我点化一下吗Java 为什么编译器没有引发错误?,java,Java,我刚刚发现我的编译器允许我写下面的代码,并且没有引起任何编译时错误。谁能给我点化一下吗 double y = arcToFindPointOn.getCenterXY().y - arcToFindPointOn.getRadius()*Math.sin(theta);; 上面代码行的奇怪之处是结尾处的分号 谢谢其他语言,如C++和C++,只使用指令;表示空指令,是允许的,不会生成错误,也不会执行任何操作 网上有很多关于这方面的文章,找到这篇: 这是从C语言中继承下来的一点奇怪之处。事实上,你
double y = arcToFindPointOn.getCenterXY().y - arcToFindPointOn.getRadius()*Math.sin(theta);;
上面代码行的奇怪之处是结尾处的分号
谢谢其他语言,如C++和C++,只使用<代码>指令;
表示空指令,是允许的,不会生成错误,也不会执行任何操作
网上有很多关于这方面的文章,找到这篇:
这是从C语言中继承下来的一点奇怪之处。事实上,你的例子
语句不是以三个分号结尾,而是以三个分号结尾
语句,其中两个为空。有时,它可能是有用的
在if语句或while循环中使用空语句,以及
那么,在其他地方禁止它似乎是武断的。此外
现在改变它将是不必要的破坏性改变
在其他语言中也有类似的C语言和C++语言,只使用了<代码>的指令;code>表示空指令,是允许的,不会生成错误,也不会执行任何操作
网上有很多关于这方面的文章,找到这篇:
这是从C语言中继承下来的一点奇怪之处。事实上,你的例子
语句不是以三个分号结尾,而是以三个分号结尾
语句,其中两个为空。有时,它可能是有用的
在if语句或while循环中使用空语句,以及
那么,在其他地方禁止它似乎是武断的。此外
现在改变它将是不必要的破坏性改变
Java还允许:
实际上什么都不做。在您的示例中,只有一个位于末尾。Java还允许:
实际上什么都不做。在您的示例中,在末尾只有一个。“;”是一个分隔符,因此编译器可以安全地忽略空白语句。然而,一些IDE帮助您优化代码,并且不会让您逃脱这个语句。
“;”是一个定界符,因此编译器可以安全地忽略空白语句。然而,有些IDE可以帮助您优化代码,并且不会让您逃脱此语句的惩罚。
“为什么编译器不会引发错误?”因为它是。;-)@T.J.,是的,我知道,哈哈,但是看着它的时候感觉很奇怪!这就像有10000个东西在应用程序中工作,都是因为这个愚蠢的东西。但Davide Piras回答得很好,现在我可以继续调试:)“为什么编译器没有引发错误?”因为它是。;-)@T.J.,是的,我知道,哈哈,但是看着它的时候感觉很奇怪!这就像有10000个东西在应用程序中工作,都是因为这个愚蠢的东西。但是Davide Piras回答得很好,现在我可以继续调试:)删除空语句不会“优化代码”,因为空语句对运行时性能没有任何影响。IDE所做的是建议整理并指出代码中可能存在的错误。删除空语句不会“优化代码”,因为空语句对运行时性能没有任何影响。IDE所做的是建议清理并指出代码中可能存在的错误。
;