Java中的逗号(,)是操作符还是分隔符?

10

说实话,这让我很困惑。有些书说逗号在Java中不是运算符,只是一个分隔符。而其他一些书则说它既是运算符又是分隔符。哪一个是正确的呢?


似乎是个好问题。你能告诉我们你的书籍参考资料吗?(主要出于好奇心) - technico
嗯…呼。我觉得没有人把它看作是操作符或分隔符的区别,只是用于根据语言/语法排列的更多或更少的白噪声。很难回答这个问题,而不仅仅是说“它在那里因为它在那里”。我在JLS中没有发现任何东西,除了逗号被简单地使用之外。我相信这本书正确地说它只是一个分隔符,将其定义为运算符对我来说不合适,因为它并不本质上执行特定的操作。 - Rogue
2
如果有疑问,JLS 对此有过于具体的解释。 - Rogue
@shmosel C语言将逗号视为表达式列表中的运算符。 - user207421
@EJP 但是在Java中,逗号没有那个意义。 - shmosel
显示剩余7条评论
3个回答

15

,在Java中不是一个操作符,就像在C中一样。在C中,你可以在两个表达式之间使用,运算符来使它们都被计算并返回第二个表达式的结果。但是在Java中,你不能这样做。

你仍然可以这样做:

for (i = 1, j = 2; i < max; i++, j++) {
}

C语言中,for循环头的三个部分都是单个表达式,并且它利用了逗号运算符的特性,允许像上面那样的语句--i=1, j=2是一个表达式,而i++, j++也是一个表达式。在Java中,for的语法必须明确允许表达式列表,因此i=1, j=2i++, j++都是两个表达式。


3

找到了,Java类使用逗号作为分隔符。JLS §3.11

九个ASCII字符是分隔符(标点符号)。

Separator: one of
(    )    {    }    [    ]    ;    ,    .

Java 8更新:

12个由ASCII字符形成的令牌是分隔符(标点符号)。

Separator: one of
(   )   {   }   [   ]   ;   ,   .   ...   @   ::

1

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