Java中运算符和关键字的区别

5
迄今为止,我对Java的理解是,运算符是像这样的东西:+、-、*、/、%、<、<=、==等等......而关键字/保留字是像这样的:boolean、char、int、do、float、double、new等等。
然而,在阅读一本Java书和一个在线教程时,我发现new被称为运算符?但是怎么回事,我认为运算符专门分配给算术类型?而我看到只有28个。为什么new关键字也被称为运算符?
谢谢

1
因为它执行一个操作。此外,goto是一个保留关键字(没有实现)。 - Elliott Frisch
3个回答

7
引用来自Oracle的优秀教程(重点是我):
实例化:新关键字是创建对象的Java运算符。
首先,没有人说你只能在原始类型上操作。你可以在对象上操作;是的,有一些数字运算符限制在原始类型上。编辑:Java中其他可用于非基元的运算符示例包括instanceof和+(用于字符串连接)。
另外,请退后一步考虑像Scala这样不区分原始类型和“引用”类型的语言。在Scala中,一切都是对象。而运算符只是围绕那些对象的方法的语法糖。

3
命名运算符的另一个很好的例子是 instanceof。你可能还想指出 + 运算符不仅限于“算术类型”,因为它也是 String 的连接运算符。 - Andreas
为什么维基百科将它定义为算术运算符:https://en.wikipedia.org/wiki/Operator_(computer_programming)#Examples - Foo Fighter

0

运算符: 运算符用于操作操作数,例如:a = 2; b = 2 c = a + b; c = 4;

操作数例如:a 到 z 和 A 到 Z 等等。

关键字: 关键字是保留字,不应在程序中使用。


0

new 不是运算符,而是关键字,根据 JLS 的规定。

运算符列表在 JLS #3.12 中给出,new 不在该列表中。

此外,在 JLS #15.10.1 的末尾,您可以看到提到了 "new 关键字"。


这也是我遇到的问题。我仍然困惑于哪个是哪个。运算符在+、-、*等方面有意义,关键字在char、boolean、int等方面有意义……为什么new应该是一个运算符。我不明白。 - Foo Fighter
@FooFighter 我的理解是,操作符执行一些操作,就像 new 也执行一些操作,比如分配内存等。 - Asif Mushtaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接