为什么编译器没有引发错误?

时间:2011-09-25 12:06:23

标签: java

我刚刚发现我的编译器允许我编写下面的代码,并没有引发任何编译时错误。有谁可以请赐教!

double y = arcToFindPointOn.getCenterXY().y - arcToFindPointOn.getRadius()*Math.sin(theta);;

关于上面代码行的奇怪之处在于最后的分号!

谢谢!

3 个答案:

答案 0 :(得分:2)

在其他语言中,如C#和C ++,只有;的指令意味着空指令并被允许,不会产生任何错误,也不会做任何事情。

网上有很多文章,发现这个:Multiple semicolons are allowed by the C# Compiler for statement termination

  

这是从C继承的一点点古怪。实际上是你的例子   不是由三个分号终止的声明,而是三个分号   陈述,其中两个是空的。偶尔它可能是有用的   使用例如空语句if语句或while循环,和   那么在其他地方禁止它似乎是任意的。除了,   现在改变它将是一个不必要的突破性改变。

答案 1 :(得分:2)

Java还允许使用empty statement

;

实际上什么都不做。在你的例子中,你最后只有一个。

答案 2 :(得分:-1)

“;”是一个分隔符,因此编译器可以安全地忽略空白语句。但是,某些IDE可以帮助您优化代码,并且不会让您放弃此声明。