JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量。 这样的功能之一是在数字文字中引入下划线 。 从Java 7开始,您可以在Java源代码中向可读性更高的10_000_000_000写一个长数字,例如10000000000。 在数字文字中使用下划线的最重要原因之一是避免了细微的错误,而这些细微的错误很难通过查看代码来找出。 很难注意到在10000000000和1000000000之间缺少的零或多余的零,而不是10_000_000_000和1_000_000_000。 因此,如果您正在使用Java源代码处理大量数字,请在数字中使用下划线以提高可读性 。 顺便说一句,在数字文字中使用下划线是有规则的,因为它们也是标识符中的有效字符,因此您只能在数字之间使用它们,而不能在数字文字的开头或数字文字的末尾使用下划线。 在下一部分中,我们将学习如何实现数字文字中的下划线以及如何在数字文字中使用下划线。

如何在Java中实现数字下划线

就像我说的那样,它是一种语法糖,就像在切换情况下如何实现String一样,这也是在编译器的帮助下实现的。 在编译时,编译器会删除这些下划线并将实际数字放入变量中。 例如10_000_000将在编译时转换为10000000。 由于CPU处理长数字串没有问题,这对他很有趣,所以我们不必理会,就是我们这个贫穷的人遇到了处理长数字的问题。 此功能对于银行和金融领域应用程序特别有用,该应用程序处理大笔钱,信用卡号,银行帐号和其他处理较长ID的域。 尽管强烈建议不要在Java文件中写入敏感数据,并且绝对不要在生产代码中这样做,但带下划线的数字比以前容易得多。

Java中在数字中使用下划线的规则

Java编程语言对于在数字文字中使用下划线具有严格的规则集。 如前所述,您只能在数字之间使用它们。 您不能以下划线开头或以下划线结尾。 这是更多地方,您不能在数字文字中使用下划线:

  1. 在数字的开头或结尾
  2. 与浮点文字中的小数点相邻
  3. 在F或L后缀之前
  4. 在需要一串数字的位置

这是几个示例,显示了数字文字中下划线的一些有效和无效用法

float pi1 = 3_.1415F;      // Invalid; cannot put underscores adjacent (before) to a decimal point
float pi2 = 3._1415F;      // Invalid; cannot put underscores adjacent (after) to a decimal point
long socialSecurityNumber1  = 999_99_9999_L;  // Invalid; cannot put underscores prior to an L suffixint a1 = _52;              // This is an identifier, not a numeric literal, starts with underscore
int a2 = 5_2;              // OK (decimal literal)
int a3 = 52_;              // Invalid; cannot put underscores at the end of a literal
int a4 = 5_______2;        // OK (decimal literal)int a5 = 0_x52;            // Invalid; cannot put underscores in the 0x radix prefix
int a6 = 0x_52;            // Invalid; cannot put underscores at the beginning of a number
int a7 = 0x5_2;            // OK (hexadecimal literal)
int a8 = 0x52_;            // Invalid; cannot put underscores at the end of a numberint a9 = 0_52;             // OK (octal literal)
int a10 = 05_2;            // OK (octal literal)
int a11 = 052_;            // Invalid; cannot put underscores at the end of a number

这是在数字文字中使用下划线的更多示例

long creditCardNumber = 6684_5678_9012_3456L;  // Never do it on production code
long socialSecurityNumber = 333_99_9999L;      // Never, Ever do it on production code
float pi =              3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;

您可以看到,与不使用数字下划线相比,代码更具可读性。 顺便说一句,在Java中始终使用L表示长文字。 尽管使用小写字母l是合法的,但您永远不要将其与数字一起使用,因为它看起来与数字1完全相似。请告诉我您是否能找出12l和121之间的差异,我想不是很多。 12L和121怎么样?

简而言之,请始终在数字中使用下划线 ,尤其是使用长数字时,应使其更具可读性。 我知道此功能仅在Java 1.7中可用,并且尚未广泛使用,但是考虑到Java 8配置文件,我希望Java 8将比Java 7更快,更广泛地被社区采用。

参考:在Javarevisited博客上, 为什么要使用Java SE 7中的数字中的下划线-来自我们JCG合作伙伴 Javin Paul的数字文字中的下划线 。

翻译自: https://www.javacodegeeks.com/2014/03/why-use-underscore-in-numbers-from-java-se-7-underscore-in-numeric-literals.html

为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线相关推荐

  1. java 正则提取$ 中内容_JAVA 使用正则从文字中提取想要的内容

    有时候我们想从一段文字中提取想要的内容,如省市区地址中提取出省市,从股票的数据中提取出关键的价格信息,抓取HTML文件后提取内容等等这些场景,这时我们可以使用JAVA正则表达式帮助我们提取出想要的数据 ...

  2. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...

    java 数字 下划线 JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量. 这样的功能之一是在数字文字中引入下划线 . 从Java 7开始, ...

  3. Java SE 8新功能介绍:使用新的DateTime API计算时间跨度

    使用Java SE 8新的DateTime API JSR 310-可以实现更清晰,可读且功能强大的编码. Java SE 8,JSR 310 在上一篇文章" 使用Streams API处理 ...

  4. Java SE 8 新特性之旅 : Java开发世界的大变动

    我很自豪的成为了adopt-OpenJDK的一员,像其他专业团队成员一样,但是我只刚加入了8个月,我们一同经历了Java SE 8 的开发.编译.编码.讨论--等等,直到JDK上线.Java SE 8 ...

  5. Java SE 7 新增特性

    Java SE 7 新增特性 作者:Grey 原文地址: Java SE 7 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new_ ...

  6. Java SE 8新功能介绍:Lambda的遍历,过滤,处理集合和方法增强

    在" Java SE 8新功能导览"系列的这篇文章中,我们将深入解释并探索代码,以了解如何使用lambda表达式和方法引用 遍历集合 ,并使用谓词接口过滤它们,实现默认方法在接口中 ...

  7. java se面试题_Java SE 8面试问答(第2部分)

    java se面试题 In my previous post, I have discussed some important Java SE 8 Interview Questions and An ...

  8. Java SE 9:不可变Map和Map.Entry的工厂方法

    发表简要目录: (Post Brief Table of Content:) Introduction介绍 Java SE 8: Immutable Empty MapJava SE 8:不可变的空映 ...

  9. java se runtime 下载_Java SE Runtime Environment下载

          Java SE Runtime Environment是一款软件编程语言和计算平台,它的基础技术支持最新的程序,同时还包括实用程序.游戏和业务应用程序.Java SE Runtime En ...

最新文章

  1. VC++中字符串编码处理的一些相关问题
  2. spring mvc 文件上传 form表单
  3. 接入上文,StarWind V2V Image Converter:虚拟机镜像转换工具,如何使用转化之后的 VMware VMDK 文件
  4. 菜鸟的MySQL学习笔记(三)
  5. “深圳疫情防控系统”服务10万人,背后有什么开发神器
  6. 挑战程序设计竞赛(第2版) 第3章笔记
  7. SiteMesh JSP布局框架介绍
  8. 因果推断笔记——python 倾向性匹配PSM实现示例(三)
  9. 在centos x86_64里编译x32的程序
  10. html中span隐藏属性,JS 如果改变span标签的是否隐藏属性
  11. 前端安全系列之二:如何防止CSRF攻击?
  12. 如何打破产品的创新窘境
  13. C语言输出素数表(1-100)前100个
  14. ubuntu磁盘空间清理
  15. mm1排队论编程c语言,完整版MM1排队系统仿真matlab实验报告
  16. 如何快速调出软键盘_软键盘怎么调出来 打开软键盘的方法【图文】
  17. Excel如何给单元格添加下拉选项?实用小技巧!怎样给单元格加入下拉列表?
  18. Excel VBA 实现Ribbon自定义功能区
  19. dbunit测试dao_使用DbUnit和Anthill控制您的测试环境
  20. [转]一个IT人才的精彩故事

热门文章

  1. HBase的hbase shell 详解
  2. Mybatis使用IN语句查询
  3. mybatis-plus 错误java.lang.NoClassDefFoundError: org/apache/velocity/context/Context
  4. java中configmanager_Spring4新的javaConfig注解
  5. python菱形画法解释_用Python画棱形
  6. thinking-in-java(12)通过异常处理错误
  7. LNCS用户写作指南【 Springer Computer Science Proceedings 】
  8. SpringMVC 参数校验
  9. java锁_Java锁
  10. 空调吸气和排气_吸气剂和二传手被认为有害