Ste*_*n D 0 java performance syntactic-sugar
我注意到在我的一个课程中,我有以下内容:
public void foo() {
int i = 4;
i = 9 + 0;;
return;
}
Run Code Online (Sandbox Code Playgroud)
两个;;连续.为什么这不是错误?应该是吗?根据我的理解,它只是编译器读取的"额外代码"代码.这会浪费性能吗?另外,如果它真的是空的,为什么我不能;;在返回后有两个?(如return;;)?
编辑:在实践中有什么用?
为什么这不是错误?
因为该语言允许您;在一行上写一个单词来表示一个空行.你可以把尽可能多的人放在;一起.参见JLS§14.6 - 空语句.
这会浪费性能吗?
我不这么认为.你不应该真的担心如此微小的拼写错误的表现.IMO,额外的分号不会使它成为字节码.因此,没有运行时性能差异.
另外,如果它真的是空的,为什么我不能有两个; 回来后?
你不能在声明之后放任何声明return,因为无论如何都不会执行.这将是一个无法达成的声明.请参阅JLS§14.21 - 无法访问的语句.
在实践中有什么用?
我能想到的一个用途是enum你想要用作实用程序类.在这种情况下enum,您只想定义一些静态方法,而不是任何常量.由于在a中定义常量enum是必需的,因此不允许在任何常量之前编写方法.在这种情况下,你会像这样写你的枚举:
enum Utility {
; // Denote the end of constant declaration. You can't omit this ';'
// Start writing your static methods.
}
Run Code Online (Sandbox Code Playgroud)