A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 朱神必 于 2014-4-3 21:59 编辑

       我在看毕向东老师讲课的时候,关于函数名是怎么定义的,他说只要是合法的都可以。我又看了一下关于标识符的命名规则,发现它的组成是由26个英文字母的大小写,数字0-9以及$(美元符号)和_(下划线)组成。不能以数字开头并且不能使用Java关键字。
       那么,大家有没有注意到一个问题,无论是讲函数名还是标识符,都没有提到是否可以使用中文作为函数名和变量名,我的疑问就来了,既然没有否认不行,到底行不行呢?
       我做了一个测试,希望大家对我的测试结果进行分析,为什么可以使用中文,谈谈你的看法。当然你也可以自己试试,分析一下使用中文有什么利弊?
Test-1:类名为中文


Test-2:函数名为中文


Test-3:变量名为中文


Test-4:对象名为中文




评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

4 个回复

正序浏览
本帖最后由 zzmxhm 于 2014-4-3 21:54 编辑

Java 规范中是这样定义标识符的:
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.

即标识符可以由 Java letter 和 Java digit 组成,并且以 Java letter 开头。而 Java letter 是这样定义的:
A "Java letter" is a character for which the method Character.isJavaIdentifierStart(int) returns true.

因此中文字符也属于 Java letter,故可以作为标识符的一部分。特别的,Java 规范中还专门指出标识符允许使用 CJK 字符:

Letters and digits may be drawn from the entire Unicode character set, which supports most writing scripts in use in the world today, including the large sets for Chinese, Japanese, and Korean. This allows programmers to use identifiers in their programs that are written in their native languages.

但使用中文字符肯定是有弊端的,首先就是不方便。其次,Java 内建了对 Unicode 字符集的支持,因此在 Java 中使用中文没有大问题。但有很多其它软件或系统没有原生的 Unicode 字符集支持机制,会使得依赖于中文的 Java 程序在和其它软件交互时出现问题。
回复 使用道具 举报
按照Java语言规范标识符是长度不限的Java letters和Java digits的序列,第一个字符必须是 Java 字母。
标识符不能和关键词,boolean 常量,或是 null 常量有相同的拼写(Unicode 字符序列)。
字母和数字可以从整个 Unicode 字符集中抽出,这个字符集支持了大多数当今世界上所用的书写字,包括了中文,日文,和韩文的大字集。这让程序设计人员在程序中使用以他们原来的语言写的标识符。
"Java letters" 是方法 Character.isJavaIdentifierStart 会传回 true 的字符。
"Java letters  or digits" 是方法 Character.isJavaIdentifierPart 会传回 true 的字符。
Java letters包括 ASCII 拉丁字母大写和小写 A - Z(\u0041 - \u005a),a - z(\u0061 - \007a),以及因为历史的缘故,ASCII 下划线(_ 或 \u005f)和钱字号($ 或 \u0024)。这个 $ 字符应该只被用在机械式生成的原始码中,或是用在很罕见的存取在传统系统中预先存在的名字
Identifier:IdentifierChars but not a Keyword or BooleanLiteral or NullLiteralIdentifierChars:JavaLetter IdentifierChars JavaLetterOrDigitJavaLetter:any Unicode character that is a Java letter (see below)JavaLetterOrDigit:any Unicode character that is a Java letter-or-digit (see below)
楼主,我喜欢你的这种精神,有疑问最好。继续保持,祝你学习顺利~~~~~
回复 使用道具 举报
这个确实可以有,支持,这种想法很好,只是这种做法,会很不习惯,自己不习惯看别人代码,别人不习惯看中文代码
回复 使用道具 举报
兄弟!你会创造中国 IT界新的历史的!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马