今天在做关于Spring和Hibernate的集成的课堂作业的时候,无意中把以前的一个数据库引入到Hibername里面。
Hibernage生成DAO后才发现,原来那个数据库是我以前用来测试中文处理用的,数据库名、表名和列名,全部都是用中文的。结果Hibernate产生的DAO里面的变量名,全部都是中文的。
我一看就晕了,正担心要花很多时间去修改,但仔细一看,没想到Eclipse居然没有报错!那么是否就说明可用呢?我赶紧写了一个main()方法来测试,而且在main()方法里面,特意加上了一个
   String 你好="你好!";   
这样的变量声明。但仍然不报错!然后运行居然也通过了。
我就觉得非常奇怪了,这是怎么回事?我记得在初学JAVA的时候,变量名就一定只能是英文字母和数字,而且一定要英文字母开头的啊?怎么会这样呢?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【siu5】截止到2008-06-26 14:10:22的历史汇总数据(不包括此帖):
    发帖数:25                 发帖分:835                
    结贴数:14                 结贴分:480                
    未结数:11                 未结分:355                
    结贴率:56.00 %            结分率:57.49 %            
    楼主加油
      

  2.   

    貌似应该和编译器用的是unicode码有关吧。
    如果没有说错的话不但可以是中文,写个日文韩文的变量也能通过
      

  3.   


    你应该结些帖子了
    java中是用unicode编码的, 中文和英文字符是一致的,
    似乎在哪个大作里提到过,变量名可以用中文
      

  4.   


    同意“java中是用unicode编码的”这种解释,当然用中文起名是不符合代码规范的。
      

  5.   

    java的变量名可以为中文,因为用unicode编码的。
      

  6.   

    unicode编码支持中文,你可以用中文做类名,变量名,方法名。但是不提倡这样干
      

  7.   


    中文名作为变量是从JDK1.5后加的新特性
    楼主应该是用的JDK1。5或者是JDK1。6吧
    程序是没有错的但为了兼容最好是不要用中文名做变量
      

  8.   

    当然可以啦,甚至还可以这样:\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 字符作为标识符也是可行的。
      

  9.   

    用的是unicode编码因为是2字节的,所以可以用中文
      

  10.   

    要看保存文件时选择的编码格式呀,我选择GB2312和ANSI编码格式可以编译和执行;选择unicode编码格式保存编译会报错。
      

  11.   

    应该是编码的原因把
    Java是编译成了unicode
      

  12.   


    "变量名就一定只能是英文字母和数字,而且一定要英文字母开头"这只是java的变量命名规范.
      

  13.   

    这个是JDK6的新特性吧?好像是~~