java - 之间的任何细微差别;或 {} 表示空语句?

标签 java terminator

据我所知,语句终止符 ; 如果单独使用,则表示空语句。此外,“空循环体”可以是一种有用的编程结构,并且是使用 null 语句制作的。

查看下面第 2 行的 while 语句,我决定用一对背靠背的 {} curl 替换终止符 ;大括号。代码编译并运行正常。这是否意味着 Java 编译器用基于 ; 的空语句替换空代码块(由“空”{} 大括号表示)?

如果 Java 做了一些稍微不同的事情,那么在这两种情况下生成的字节码是否相同? (很抱歉,我不能检查这个 ATM。我是 Java 的新手,我还没有显示和检查字节码的必要知识)。

int i=0,j=100;

// Either a terminating ; symbol or {} braces work to make an "empty loop body".
while (++i < --j) {}  
System.out.println("The midpoint between 0 and 100 is " +i);  // Midpoint is 50.

最佳答案

两者在语义上是相同的,编译器在两种情况下都会生成相同的代码。如果您试图有意包含一个空循环体,{} 会更清楚地表明这是故意的,而不仅仅是一个杂散的分号。您应该始终明确地注释此类情况,并且通常最好重新编写代码以避免完全避免忙等待循环。

关于java - 之间的任何细微差别;或 {} 表示空语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20192363/

相关文章:

java - 如何在 Tomcat 上的 Web 应用程序中提供静态文件

java - Matlab:如何正确使用 Java ImageIO 类来获取 BufferedIMage

linux - Nautilus:用 Vim 打开

xcode - sudo xcode 选择开关命令不起作用

C++ 字符数组正确移动空终止符?

ubuntu - 终结器中的 Emacs goto-line 不起作用

java - 与tomcat 7建立数据库连接

java - 添加叠加的 JLabel

java - 执行时间和大 O

ruby-on-rails - 终结者找不到 Rails