什么是';{';符号(大括号)在Java中表示什么?
我目前正在学习Java,有人问了我一个似乎不符合简单答案的问题: 以下符号在Java中的含义是什么:什么是';{';符号(大括号)在Java中表示什么?,java,parsing,Java,Parsing,我目前正在学习Java,有人问了我一个似乎不符合简单答案的问题: 以下符号在Java中的含义是什么:{ 当然,有一些共同的含义:if语句的主体、for循环、其他控制结构。但是,它也可能是方法的开始,或者是初始值设定项——这些似乎没有什么共同之处 我花了很多时间在Java上下文中搜索这个符号的单个定义,但没有找到任何足够的定义 什么是Java中开头的大括号所表示的内容的包罗万象的定义?您的讲师提出的问题似乎不太好,因为在Java中,{符号没有一个统一的含义 在语句上下文中,{符号用于表示块语句的开
{
当然,有一些共同的含义:if语句的主体、for
循环、其他控制结构。但是,它也可能是方法的开始,或者是初始值设定项——这些似乎没有什么共同之处
我花了很多时间在Java上下文中搜索这个符号的单个定义,但没有找到任何足够的定义
什么是Java中开头的大括号所表示的内容的包罗万象的定义?您的讲师提出的问题似乎不太好,因为在Java中,{符号没有一个统一的含义 在语句上下文中,{符号用于表示块语句的开头。这说明了{with if语句、while循环、for循环、do…while循环、switch语句等的所有用法,从技术上讲,这些用法仅适用于单个语句,但通常与块语句一起使用:
if (x == 0) {
statementOne();
statementTwo();
}
在方法或类型(类/接口/枚举/注释)的上下文中,{符号用于表示类或方法主体的开头:
public class NewClass {
...
public void foo() {
...
}
}
它也可以在类内用于声明初始值设定项或静态初始值设定项块:
class MyClass() {
static int x;
static {
x = somethingHorrible();
}
};
在数组文字的上下文中,{符号用于表示该文字中使用的元素列表的开头:
int[] arr = new int[] {1, 3, 7};
开括号符号的每一种用法都不同于其他所有用法。事实上,如果我们在这些不同的上下文中使用不同的符号,那么这种语言就会很好地工作
我认为对你的问题最好的回答是{在某些情况下被用作一个单元,无论它是块语句(许多语句被视为单个语句)、类(许多方法和字段被视为单个对象)、方法(许多语句被视为单个统一的代码段),一个初始值设定项(许多事情需要一次完成),等等
正如评论所指出的,在大多数上下文中,大括号引入了一个新的作用域。语句块、类体、初始值设定项体和函数体都引入了一个新的作用域,这一点必须牢记在心。(不过,数组初始化并不能做到这一点。)在Java中,当您打开一个大括号时,意味着您打开了一个新的范围(通常是一个嵌套的范围)。需要了解的一件重要事情是,您将在此范围内定义的变量(放置右大括号的一端)将不会在范围外被识别 另一种方法是不正确的:如果您在范围外定义一个变量,然后打开一个新变量,那么将从嵌套范围内识别该变量 例如:
int k = 5;
if (true) { //opening a new scope
// k is recognized here!
int i = 10;
}
// here i is not recognized
在某些情况下,必须使用大括号,例如:
- 类声明
- 方法声明
- 在
、if
和while
语句之后for
- 某种语言结构序列的开始,以右大括号结束
BlockStatement
s的序列。它进一步将BlockStatement
定义为a、a或a。而这个定义涵盖了许多使用大括号的Java构造—例如,a是块,如果用大括号括起,或if
语句的主体,是一个块-它不包括类主体或数组初始值设定项,它们与块具有不同的内容
对{
缺乏一个单一的、包罗万象的定义并不令人惊讶,也不应在哲学上令人不满意
“of”一词在英语中的含义是什么
当然,没有这样包罗万象的定义;相反,“of”是一个“的”字。你最好要么说“of”是一个介词,要么像字典一样列举各个词的含义。虽然我认为你写了一个很好的答案,但我不同意“不是很好”这个问题。年轻程序员的一大障碍是理解范围的含义。在您提供的所有示例中,都有一个相互联系,这就是“新范围的开始”.The是您在回答中提到的上下文。@alfasin大多数示例都是这样,但数组文字初始化不适用。不过,我确实明白您的意思。@alfasin事实上,我想得越多,就越同意您的意见。我已相应地更新了我的回答。主持人注意:我已将此问题锁定为停止这是一场拔河比赛,两个派系似乎为了争夺这个帖子而反复关闭/删除/和取消删除/重新打开帖子。如果任何一方都这么在意,请在上面发布一个问题以找到一个c