为什么标识符中不允许使用#?

问题描述 投票:0回答:3

Java 允许标识符以 $(美元符号)开头或包含 $(美元符号)。 例如 int a$b;

但是为什么标识符中不允许使用 # 呢?具体原因是什么? #是Java中的运算符还是其他什么东西? 例如 int a#b;

java identifier
3个回答
8
投票

我想说它是可读性和语言历史背景的结合。请记住,Java 语法的设计目的是让 C 和 C++ 程序员易于理解。 (正如 @dan04 指出的,

#
字符在 C 和 C++ 的大多数方言中都很重要。)

顺便说一句,虽然

$
在 Java 标识符中在技术上是合法的,但它保留供编译器、代码生成器和其他东西使用。如果您在源代码中的标识符中使用
$
,则可能会遇到与(例如)
javac
编译器生成的合成标识符发生冲突的问题。


3
投票

我怀疑禁止使用

#
是有特定原因的,因为人们普遍厌恶标识符中的标点符号(这可能看起来像运算符)。为了处理 WORD_SEPARATION 和 Inner$Classes,做出了特殊例外。

在 Java 语法所基于的 C 和 C++ 中,

#
用于 预处理器 指令。


1
投票

变量可以包含字母、数字、下划线和美元符号 - 不包括#、@、~、`

我想这是为了可读性 -

int s#@t;
看起来很奇怪。

© www.soinside.com 2019 - 2024. All rights reserved.