Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么new在Java中被称为操作符?_Java_New Operator - Fatal编程技术网

为什么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++中调用它。我不喜欢这个名称,因为它“操作”的本身不是一个表达式,它对子表达式进行操作是运算符的本质。