奇怪,变量名怎么可以用中文?

siu5 2008-06-26 02:10:24
今天在做关于Spring和Hibernate的集成的课堂作业的时候,无意中把以前的一个数据库引入到Hibername里面。
Hibernage生成DAO后才发现,原来那个数据库是我以前用来测试中文处理用的,数据库名、表名和列名,全部都是用中文的。结果Hibernate产生的DAO里面的变量名,全部都是中文的。
我一看就晕了,正担心要花很多时间去修改,但仔细一看,没想到Eclipse居然没有报错!那么是否就说明可用呢?我赶紧写了一个main()方法来测试,而且在main()方法里面,特意加上了一个
String 你好="你好!";
这样的变量声明。但仍然不报错!然后运行居然也通过了。
我就觉得非常奇怪了,这是怎么回事?我记得在初学JAVA的时候,变量名就一定只能是英文字母和数字,而且一定要英文字母开头的啊?怎么会这样呢?
...全文
258 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
longtramp 2008-06-27
  • 打赏
  • 举报
回复
编码问题
TRMeister 2008-06-27
  • 打赏
  • 举报
回复
这个是JDK6的新特性吧?好像是~~
joyce-lan 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 numen_wlm 的回复:]
unicode编码支持中文,你可以用中文做类名,变量名,方法名。。。。但是不提倡这样干
[/Quote]

"变量名就一定只能是英文字母和数字,而且一定要英文字母开头"这只是java的变量命名规范.
Sou2012 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 javazhuobin 的回复:]
貌似应该和编译器用的是unicode码有关吧。
如果没有说错的话不但可以是中文,写个日文韩文的变量也能通过。。。。。。。。。
[/Quote]
wu_07 2008-06-26
  • 打赏
  • 举报
回复
为了程序的健壮性,还是不要用的好
lord_is_layuping 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 KOOK_OKKO 的回复:]
引用 2 楼 javazhuobin 的回复:
貌似应该和编译器用的是unicode码有关吧。
如果没有说错的话不但可以是中文,写个日文韩文的变量也能通过。。。。。。。。。

[/Quote]
fengyifei11228 2008-06-26
  • 打赏
  • 举报
回复
应该是编码的原因把
Java是编译成了unicode
yuppy 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tujiazu 的回复:]
第一次听说来。
[/Quote]
fuyou001 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tujiazu 的回复:]
第一次听说来。
[/Quote]
「已注销」 2008-06-26
  • 打赏
  • 举报
回复
第一次听说来。
yangxzh 2008-06-26
  • 打赏
  • 举报
回复
要看保存文件时选择的编码格式呀,我选择GB2312和ANSI编码格式可以编译和执行;选择unicode编码格式保存编译会报错。
zidasine 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dinglinhu 的回复:]

同意“java中是用unicode编码的”这种解释,

当然用中文起名是不符合代码规范的。
[/Quote]
中文也是字母
fdar 2008-06-26
  • 打赏
  • 举报
回复
用的是unicode编码因为是2字节的,所以可以用中文
  • 打赏
  • 举报
回复
当然可以啦,甚至还可以这样:

\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020
\u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079
\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020
\u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063
\u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028
\u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020
\u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074
\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020
\u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b
\u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d


把上面的一段复制到新建的 Ugly.java 文件中,编译后再运行………
代码引自《Java解惑》。


楼主说的:

我记得在初学JAVA的时候,变量名就一定只能是英文字母和数字,而且一定要英文字母开头的啊?怎么会这样呢?

这是不对的,Java 中有两个现成的静态方法可以判断哪个字符可以作为标识符中的字符:

Character.isJavaIdentifierStart(char)
看看某个字符是否能作为 Java 标识符的第一个字符

Character.isJavaIdentifierPart(char)
看看某个字符是否能作为 Java 标识符中后面的字符

汉字属于 Unicode 字符,Java 从一设计开始就是支持 Unicode 的,
因此使用一些 Unicode 字符作为标识符也是可行的。

nick6610 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 numen_wlm 的回复:]
unicode编码支持中文,你可以用中文做类名,变量名,方法名。。。。但是不提倡这样干
[/Quote]

严重支持
KOOK_OKKO 2008-06-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 javazhuobin 的回复:]
貌似应该和编译器用的是unicode码有关吧。
如果没有说错的话不但可以是中文,写个日文韩文的变量也能通过。。。。。。。。。
[/Quote]
KK3K2005 2008-06-26
  • 打赏
  • 举报
回复
对 用中文 万一出现编码问题。。。
xiezongzhou 2008-06-26
  • 打赏
  • 举报
回复

中文名作为变量是从JDK1.5后加的新特性
楼主应该是用的JDK1。5或者是JDK1。6吧
程序是没有错的但为了兼容最好是不要用中文名做变量
numen_wlm 2008-06-26
  • 打赏
  • 举报
回复
unicode编码支持中文,你可以用中文做类名,变量名,方法名。。。。但是不提倡这样干
baibenq 2008-06-26
  • 打赏
  • 举报
回复
java的变量名可以为中文,因为用unicode编码的。
加载更多回复(3)

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧