为什么new在Java中被称为操作符?
为什么为什么new在Java中被称为操作符?,java,new-operator,Java,New Operator,为什么new关键字在Java中被称为运算符 我知道new在Java中为一个对象动态分配内存并返回对它的引用,但为什么它被称为操作符呢?它是一个操作符,不是吗 您可以创建如下实例: A some = A.new(); // This wouldn't be an operator but just a built-in method 或者可以是+ A some = +A(); 但是在Java和其他流行语言中,他们决定实现一个操作符来创建类的实例,这就是所谓的new操作符。它在Java中是一个保
new
关键字在Java中被称为运算符
我知道
new
在Java中为一个对象动态分配内存并返回对它的引用,但为什么它被称为操作符呢?它是一个操作符,不是吗
您可以创建如下实例:
A some = A.new(); // This wouldn't be an operator but just a built-in method
或者可以是+
A some = +A();
但是在Java和其他流行语言中,他们决定实现一个操作符来创建类的实例,这就是所谓的
new
操作符。它在Java中是一个保留关键字,所以不能像重写方法一样重写它。它对类名进行操作——对于给定的类名,它返回一个新的类实例。这就像一元的-
(减号)运算符,它接受一个整数并返回另一个整数(一个带相反符号的整数),只是对于new,输入和输出是不同的类型。官方的new
不是运算符。Java语言规范中没有这样的词,Java语言规范是这方面的唯一权威
还有一个,它涉及关键字
new
实际上,Java语言规范并不调用new
操作符。它:
38个由ASCII字符组成的标记是运算符
Operator:
= > < ! ~ ? : ->
== >= <= != && || ++ --
+ - * / & | ^ % << >> >>>
+= -= *= /= &= |= ^= %= <<= >>= >>>=
操作员:
= > < ! ~ ? : ->
== >= >>>
+= -= *= /= &= |= ^= %= = >>>=
new
只不过是在
我认为这是一个合理的定义,因为运算符将使用操作数(或者,从源代码的角度来看,出现在表达式旁边),但后面的参数列表的类名称本身并不是一个有效的表达式,也不被评估为在运行时产生一个值。 <>我怀疑调用<代码> new <代码>的操作是从C++中产生的,其中新操作符可以独立于构造函数调用重载,以定制内存分配策略。Java或C#等托管语言不再允许这样的分离,但操作符一词已经被卡住了
例如,实际谈论的是一个
new
运算符,并指定其优先级,但实际指定其含义时,只讨论3种表达式类型,而不是可以使用新关键字形成的表达式类型(对象创建、数组创建和委托创建表达式)。是的,您是对的,我看到了这个链接,但一般来说,我们经常把它们称为操作符,不是因为它们在C++中调用它。我不喜欢这个名称,因为它“操作”的本身不是一个表达式,它对子表达式进行操作是运算符的本质。