Java标识符中的“连接字符”是什么?

问题

我正在阅读SCJP,我对这一行有疑问:

标识符必须以字母,货币字符($)或连接字符(如下划线(_))开头。标识符不能以数字开头!

它声明有效的标识符名称可以以连接字符开头,例如underscore。我认为下划线是唯一有效的选择吗?还有哪些其他人物?


#1 热门回答(263 赞)

这是一个连接字符列表。这些是用于连接单词的字符。
http://www.fileformat.info/info/unicode/category/Pc/list.htm

U+005F _ LOW LINE
U+203F ‿ UNDERTIE
U+2040 ⁀ CHARACTER TIE
U+2054 ⁔ INVERTED UNDERTIE
U+FE33 ︳ PRESENTATION FORM FOR VERTICAL LOW LINE
U+FE34 ︴ PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
U+FE4D ﹍ DASHED LOW LINE
U+FE4E ﹎ CENTRELINE LOW LINE
U+FE4F ﹏ WAVY LOW LINE
U+FF3F _ FULLWIDTH LOW LINE

这在Java 7上编译。

int _, ‿, ⁀, ⁔, ︳, ︴, ﹍, ﹎, ﹏, _;

一个例子。在这种情况下,tp是列的名称和给定行的值。

Column<Double> ︴tp︴ = table.getColumn("tp", double.class);

double tp = row.getDouble(︴tp︴);

下列

for (int i = Character.MIN_CODE_POINT; i <= Character.MAX_CODE_POINT; i++)
    if (Character.isJavaIdentifierStart(i) && !Character.isAlphabetic(i))
        System.out.print((char) i + " ");
}

版画

$ _¢¥¥؋৲৳૱฿฿₣₤₥₨₨₨₩₩₩₫₯₰₰₸₸₸₸₸₸﷼﷼﷼﷼﷼﹎﹎﹎ $ $ _¢£¥₩


#2 热门回答(25 赞)

遍历整个65k字符并询问Character.isJavaIdentifierStart(c)。答案是:"承诺"小数8255


#3 热门回答(7 赞)

可以在Java Language Specification中找到合法Java标识符的权威规范。