我目前正在学习Java,并且给出了一个似乎无视简单答案的问题:
什么是Java中的以下符号的含义:
{?
当然,还有一个共同的含义:if声明的主体,for循环,其他控制结构.但是它也可能是方法或初始化器的开始 - 这些似乎没有那么共同之处.
我花了很多时间在Java的上下文中搜索这个符号的单个定义,但是没有找到任何足够的东西.
什么是开放大括号在Java中表示的全面定义?
tem*_*def 15
你的导师提出的问题似乎并不那么好,因为Java中的{符号没有统一的含义.
在语句的上下文中,{符号用于表示块语句的开头.这解释了{with if语句,while循环,for循环,do ... while循环,switch语句等的所有用法,它们在技术上仅适用于单个语句,但通常与块语句一起使用:
if (x == 0) {
statementOne();
statementTwo();
}
Run Code Online (Sandbox Code Playgroud)
在方法或类型(类/接口/枚举/注释)的上下文中,{符号用于表示类或方法的主体的开头:
public class NewClass {
...
public void foo() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
它也可以在类中用于声明初始化器或静态初始化器块:
class MyClass() {
static int x;
static {
x = somethingHorrible();
}
};
Run Code Online (Sandbox Code Playgroud)
在数组文字的上下文中,{符号用于表示该文字内使用的元素列表的开头:
int[] arr = new int[] {1, 3, 7};
Run Code Online (Sandbox Code Playgroud)
开放式支架符号的这些用途中的每一个都与所有其他用途不同.事实上,如果我们为这些不同的上下文中的每一个使用不同的符号,那么语言就可以正常工作.
我认为对你的问题的最佳答案是{用于某些事物将被视为一个单元的上下文中,是否是块语句(许多语句被视为单个语句),类(许多方法和字段)被视为单个对象),一种方法(许多语句被视为一个统一的代码片段),一个初始化器(许多需要一次完成的事情),等等.
在大多数这些背景中,正如评论所指出的那样,大括号引入了一个新的范围.语句块,类主体,初始化主体和函数体都引入了一个新的范围,这绝对是要记住的重要事项.(但是,数组初始化不会这样做.)