实际上,Java 语言规范并没有调用new运算符。它写道:
由 ASCII 字符组成的 38 个标记是运算符。
Run Code Online (Sandbox Code Playgroud)Operator: = > < ! ~ ? : -> == >= <= != && || ++ -- + - * / & | ^ % << >> >>> += -= *= /= &= |= ^= %= <<= >>= >>>=
我认为这是一个合理的定义,因为运算符将采用操作数(或者,从源代码的角度来看,出现在表达式旁边),但是参数列表后面的类名本身不是有效的表达式,也不会对其进行评估在运行时产生一个值。
我怀疑调用new运算符的做法源自 C++,其中 new 运算符可以独立于构造函数调用而重载,以自定义内存分配策略。Java 或 C# 等托管语言不再允许这样的分离,但运算符这个术语仍然存在。
例如,C# 语言规范实际上讨论了一个new运算符,并指定了它的优先级,但在实际指定其含义时只讨论了可以用 new 关键字形成的 3 种表达式类型(对象创建、数组创建和委托创建表达式) )。
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |