根据我的科学Java实验,int x = 0;相当于int x = 0;;相当于int x = 0;;;;;;;;;;;;;;;
use*_*own 18
正如Jake King所写,你可以产生空语句,在循环中什么都不做:
while (condition);
Run Code Online (Sandbox Code Playgroud)
但要明白,你会写
while (condition)
;
Run Code Online (Sandbox Code Playgroud)
甚至更好:
while (condition)
/** intentionally empty */
;
Run Code Online (Sandbox Code Playgroud)
甚至更好,正如MichaelKjörling在评论中指出的那样,
while (condition)
{
/** intentionally empty */
}
Run Code Online (Sandbox Code Playgroud)
更常见的是,您在for语句中看到无限循环:
for (;;)
Run Code Online (Sandbox Code Playgroud)
或只有一个空的陈述
for (start;;)
for (;cond;)
for (;;end)
Run Code Online (Sandbox Code Playgroud)
你可以做的另一件事是,编写一个程序,一个用一个,一个用2个分号:
public class Empty
{
public static void main (String args[])
{
System.out.println ("Just semicolons");;
}
}
Run Code Online (Sandbox Code Playgroud)
编译它,并运行列表字节代码的大小(identic)并在字节码(identic)上执行md5sum.
因此,在没有改变语义的情况下,它显然已经被优化了,至少对于1.6-Oracle编译器我可以这么说.
是的,它们是空的陈述,根本不做任何事情.它们由编译器优化,但在某些情况下,这个空语句实际上做了一些事情,做了一组空括号({}).它们继承自C语法,但它们在Java中几乎没有用处.在C中,有时做这样的事情很有用:
while (condition);
Run Code Online (Sandbox Code Playgroud)
这将循环直到condition为false,从而阻止代码进行.但是,这在现代代码中是不鼓励的,并且不应该真正用于Java.但是,空语句确实算作一个语句,只是一个无用的语句,所以构造如下:
if (condition);
doSomething();
Run Code Online (Sandbox Code Playgroud)
....可能会导致一些莫名其妙的结果.该if语句将调用空语句而不是方法,因此将始终调用该方法.请记住一点需要注意.
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |