Java是国际化的编程语言,印象中看到可以用任何语言做标识符,于是验证一下,然后动手试了一下

class 输出类{public static void main(String[] args) {String 字符串变量1="你好,JAVA-1\n";System.out.printf(字符串变量1);输出方法();}private static void 输出方法(){String 字符串变量2="你好,JAVA-2";System.out.printf(字符串变量2);}
}

编译执行结果

为什么可以java支持中文作为标识符呢?
书上都是这样子写的:
* 标识符由字母、数字、下划线“_”、美元符号“$”组成,第一个字符不能是数字
* 不能把java关键字作为标识符
* 标识符没有长度限制
* 标识符对大小写敏感

但是这样子明显和测试的结果不一致,标识符是中文也可以,不一定是字母,那么我就去翻一下官网java教程说明http://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.8

3.8. Identifiers
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.

Identifier:
IdentifierChars”>IdentifierChars but not a 3.html#jls-Keyword”>Keyword or 3.html#jls-BooleanLiteral”>BooleanLiteral or 3.html#jls-NullLiteral”>NullLiteral

IdentifierChars:
JavaLetter {JavaLetterOrDigit}

JavaLetter:
any Unicode character that is a “Java letter”(//使用的Unicode字符集)

JavaLetterOrDigit:
any Unicode character that is a “Java letter-or-digit”

“Java letter” is a character for which the method Character.isJavaIdentifierStart(int) returns true.

“Java letter-or-digit” is a character for which the method Character.isJavaIdentifierPart(int)
returns true.

The “Java letters” include uppercase and lowercase ASCII Latin letters A-Z(\u0041-\u005a), and a-z (\u0061-\u007a), and, for historical reasons, the ASCII underscore (_, or \u005f) and dollar sign (,or\u0024).The, or \u0024). The  sign should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems.The “Java digits” include the ASCII digits 0-9 (\u0030-\u0039).

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.(//重点在这里)

An identifier cannot have the same spelling (Unicode character sequence) as a keyword (§3.9), boolean literal (§3.10.3), or the null literal (§3.10.7), or a compile-time error occurs.

以上简略翻译一下官网文档说明。内容都是简单的,只翻译了重点。 不知道以前的java规定是字母,还是翻译教学有误。我觉得翻译应该是加引号的‘‘Java 字母’’,而不是字母。现在官网的教程说明已经很清楚了,但是我们的教材还没更新,本身学习就具有滞后性,再加上教材的滞后性,这样显得更加滞后了。

那有人也会说,用中文作标识符不好,如知乎的这个问题,那再教你可以用中文作标识符有什么意义呢?

中文本身不太适合做编程,标识符使用英文才能更好地标识。尝试用中文去作标识符的意义在于深刻认识标识符是什么,Unicode是什么,编码是什么,而不是书说是什么就是什么。

Java“中文”编程-java为什么可以使用中文标识符相关推荐

  1. Java并发编程-Java内存模型(JMM)

    前言 在上一章 Java并发编程-Android的UI框架为什么是单线程的? 中笔者介绍了并发编程线程安全「三大恶」:「可见性」.「原子性」以及「有序性」 广义上来说,并发编程问题笔者归纳为:是由于后 ...

  2. 面对对象课程设计报告java,面向对象编程 JAVA编程综合实验报告.doc

    PAGE \* MERGEFORMAT 20 成绩: JAVA编程B综合实验报告 实验名称:面向对象编程 实验时间:2012年 5月 31日星期四 JAVA编程B综合实验报告 一.实验名称 面向对象编 ...

  3. java 并发存储,java并发编程——Java存储模型(JMM)

    --仅作笔记使用,内容多摘自<java并发编程实战> Java内存模型(JMM) JMM是Java并发编程的基础,了解JMM,可以帮助我们对并发编程的机制有更深入的了解,在了解JMM之前, ...

  4. java 分布式编程,Java的并行、并发和分布式编程

    你将学到什么 Distributed Computing Optimistic Concurrency Control Parallel Computing Java Concurrency 课程概况 ...

  5. 1. Java并发编程-Java内存模型

    并发问题的原因可以归结为三大类:可见性,有序性和原子性. 可见性的原因是CPU缓存,不同CPU之间缓存的数据互相之间不可见. 有序性的原因是编译优化(指令重排序) 原子性的原因是一条高级指令可能对应多 ...

  6. java麦克风编程,java – Synch 2类似的音频输入(一个靠文件,一个靠麦克风)

    看看这里 这是完整的声音api文档 也 >第4章:在多行上同步播放 >第6章:使用控件处理音频 但 这是我在jsresource faq中找到的 如何同步两条或更多条播放线? 调制器中的同 ...

  7. java多态编程,java范例多态

    java实例多态 通过实例说明Java中的多态 Java中的多态允许父类指针指向子类实例.如:Father obj=new Child();(其中Child是Father的子类).这样就产生了一个问题 ...

  8. 为什么中文不能用来编程呢?难道中文比英语差?看完长见识了

    今天小编带大家来了解一下编程的问题. 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程.那么有些小伙伴就很困惑了,为什么我们编程的时候为什么中文不能用来编程呢? ...

  9. 中文编程最高境界,不用编程,会用excel就会用,香不香?

    一直以来,关于中文编程的争议从未消停过.现如今,中文编程发展又是如何? ★为了实现中文编程,从未停下脚步 我们知道,中国人一直以来为了实现中文编程付出了不懈的努力,前前后后研发了几十种中文编程语言.比 ...

最新文章

  1. XAML 编辑调试工具 Kaxaml
  2. 数学建模第四节2020.4.24-5.3补
  3. BZOJ 2154 Crash的数字表格 (莫比乌斯反演)
  4. Android调试工具_ Stetho
  5. Vaadin应用程序中的EJB查找
  6. 甘肃政法学院计算机科学与技术试题,甘肃政法学院计算机科学与技术专业课程教学大纲.doc...
  7. 华为在中国建立其全球最大的网络安全透明中心
  8. LeetCode-Maximal Rectangle-最大矩形
  9. 前后端分离后的前端时代,使用前端技术能做哪些事?
  10. jmeter使用if控制器_Jmeter 常见逻辑控制器详解
  11. php求add函数,PHP函数每日一贴之字符串函数-addcslashes()函数
  12. gif跟随ProgressBar一起动/pk进度条gif特效
  13. 免费的瓦片图集资源TiledMap
  14. opc 接口计算机,OPC接口使用技巧
  15. Linux下写盘速度测试程序,Linux下硬盘读写速度测试
  16. Bailian2967 特殊日历计算【日期计算】
  17. 八卦图php怎么做,揭秘伏羲是如何画出神奇的八卦图的?
  18. tp-link与台式计算机连接教程,台式电脑连接到无线路由器上网教程
  19. python拼图游戏代码_Python图像处理——人物拼图游戏
  20. 身高体重排序-华为OD

热门文章

  1. 如何测试硬盘软件,如何进行硬盘测试?磁盘健康检测方法介绍
  2. java求长方形的表面积程序_Android Studio实现长方体表面积计算器
  3. 浑身尖刺的服务可用性守护者——hystrix熔断器实践记录
  4. AutoCAD .Net 颜色系统
  5. golang 大数据平台_人工智能大数据平台中Golang的应用实践
  6. 韩版机泛泰A850去除漫游时拨号选择框
  7. [乐意黎原创] JavaScript中数组使用总结
  8. 【亲测可用】云里黑白第十三回——解决出现问题,你的PIN不可用,单击以重新设置PIN,诊断启动,禁用服务
  9. 强连通基础与例题(Kosaraju算法与Tarjan算法)
  10. 苹果测试充电速度软件,ChargerLAB推出iPhone 8快充测试工具POWER-Z