pg-*_*ban 16 java variables unicode
我在一个讨论变量命名的论坛中进行了一次有趣的讨论.
除了惯例之外,我注意到变量具有Unicode字符的名称是合法的,例如以下是合法的:
int \u1234;
Run Code Online (Sandbox Code Playgroud)
但是,如果我给它命名为#,则会产生错误.根据Sun的教程,如果"以字母开头,美元符号为"$"或下划线字符"_",则有效."
但是unicode 1234是一些Ethiopic角色.那真正被定义为"字母"的是什么?
Jon*_*eet 22
Unicode标准定义了什么算作字母.
可以从整个Unicode字符集中绘制字母和数字,该字符集支持当今世界中使用的大多数书写脚本,包括中文,日文和韩文的大集.这允许程序员在他们的程序中使用以其本地语言编写的标识符.
"Java letter"是Character.isJavaIdentifierStart(int)方法返回true的字符."Java letter-or-digit"是Character.isJavaIdentifierPart(int)方法返回true的字符.
从Character文件isJavaIdentifierPart:
确定字符(Unicode代码点)是否可能是Java标识符的一部分,而不是第一个字符.如果满足以下任何条件,则字符可能是Java标识符的一部分:
- 这是一封信
- 它是货币符号(例如'$')
- 它是一个连接标点字符(例如'_')
- 这是一个数字
- 它是一个数字字母(例如罗马数字字符)
- 它是一个组合标记
- 它是一个非间距标记
- isIdentifierIgnorable(codePoint)为字符返回true