根据我的科学
Java实验,int x = 0;相当于int x = 0 ;;这相当于int x = 0 ;;;;;;;;;;;;;;
>为什么Java允许这个?有什么实际应用吗?
这些都是空的吗?他们在运行时实际上占用了任何额外的处理时间吗? (我假设他们只是优化了?)
>其他语言做这个吗我猜这是继承自C的东西,就像Java中的很多东西一样.这是真的?
解决方法
正如Jake King写道,你可以产生一个空的语句,在循环中什么都不做:
while (condition);
但要明确,你会写
while (condition) ;
甚至更好:
while (condition) /** intentionally empty */ ;
甚至更好,正如MichaelKjörling在评论中指出的那样,
while (condition) { /** intentionally empty */ }
更多的时候,你会看到它在for-statements中无限循环:
for (;;)
或只有一个空的语句
for (start;;) for (;cond;) for (;;end)
另一件可以做的事情就是写一个程序,一次一次,一次用2个分号:
public class Empty { public static void main (String args[]) { System.out.println ("Just semicolons");; } }
编译它,并运行列表字节码(标识)的大小,并在字节码(identic)上做一个md5sum.
因此,在语义不变的情况下,它被明确优化,至少对于1.6-Oracle编译器,我可以这么说.