Eva*_*van 6 java arrays declaration curly-braces
我想知道为什么Java数组声明使用大括号而不是标准括号.如图所示.我想这可能需要进一步了解大括号,但这具体到我的议程上.
Object[] tableHeaders = {"Cars","Trucks","Tacos"};
Run Code Online (Sandbox Code Playgroud)
这是正确的,而不是.
Object[] tableHeaders = ("Cars","Trucks","Tacos");
Run Code Online (Sandbox Code Playgroud)
我不能说为什么 James Gosling等人选择了这个特别的选择......
但是,使用圆括号而不是大括号会对Java语法造成严重的歧义问题.请考虑以下示例:
Object[] tableHeaders = ("Cars");
Run Code Online (Sandbox Code Playgroud)
圆括号是表示数组构造函数,还是它们是正常表达式表达式语法的一部分?
现在有可能提出一些复杂的优先级规则来解决这个问题,但这对程序员和编译器编写者来说都很困难.
(在语法层面,Java解析器需要处理模糊性:
VariableInitializer:
ArrayInitializer
Expression
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,("Cars")匹配ArrayInitializer和Expression生成...如果对数组初始值设定项使用圆括号.确定哪个是正确的含义需要查看声明的变量类型...然后对VariableInitializer进行上下文敏感的解析.讨厌.)
我说他们在不使用圆括号进行数组初始化器时做出了正确的选择.
方括号也不起作用.考虑尝试解释这个......
... = new Object[]["Cars"]; // 1-D array
Run Code Online (Sandbox Code Playgroud)
与
... = new Object[21][]; // 2-D array
Run Code Online (Sandbox Code Playgroud)
与
... = new Object[][]; // is that 1-D or 2-D?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10063 次 |
| 最近记录: |