java 数字 下划线

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博客上使用我们的JCG合作伙伴 Javin Paul的Java SE 7数字中的下划线-数字文字中的下划线 。

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

java 数字 下划线

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

  1. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  2. java 数字大小写转换_阿拉伯数字大小写转换java工具

    package org.centric.utils; import java.text.DecimalFormat; public class MoneyUtil { /** 大写数字 */  pri ...

  3. java 基础 笔试题_非常全面的java基础笔试题

    1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...

  4. java list sublist方法_(转)Java 中 List.subList() 方法的使用陷阱

    原文:http://blog.csdn.net/cleverGump/article/details/51105235 前言 本文原先发表在我的 iteye博客: http://clevergump. ...

  5. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

  6. java list e 查找_源码(04) -- java.util.ListE

    java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...

  7. java显示每年天数_关于日历:Java计算一年中的天数

    在任何本机Java类中都没有一种方法可以计算出特定年份中的多少天? 例如,是year年(366天)还是正常年份(365天)? 还是我需要自己写? 我正在计算两个日期之间的天数,例如,距离我生日还剩多少 ...

  8. java 锁旗标_第三节:Java基础知识

    1.面向对象基本概念 2.类与对象 3.类和对象的定义格式 4.对象与内存分析 5.封装性 6.构造方法 7.this关键字 8.值传递与引用传递? 9.对象的一对一关系 10.static关键字 1 ...

  9. java词法分析器实验报告_词法分析器实验报告(JAVA)

    实验一.词法分析实验 商业软件工程专业   张树恒  201506110093 一.实验目的 通过设计一个词法分析程序,对词法进行分析,加强对词法的理解,掌握对程序设计语言的分解和理解. 二.实验内容 ...

最新文章

  1. mysql语句报错1403_GoldenGate SQL error 1403 mapping 错误解决方案
  2. [部署]VM11下CentOS7mini安装及配置
  3. psid mysql_MySQL数据双向同步解决方案(推荐)
  4. MySQL性能优化的最佳经验
  5. 用jQuery实现简单的加入收藏页面的功能
  6. 倒计时6天|2020腾讯广告犀牛鸟计划申请即将截止,错过再等一年!
  7. PHP获得文件的md5并检验是否被修改
  8. wordpress rest api 登录_Python构建RESTful网络服务[Django篇:生成API文档]
  9. 招聘数据采集+Hive数据分析+数据可视化
  10. uniapp:广告API使用总结
  11. 层次方框图、Warnier图、IPO图
  12. 获取用户已安装的APP列表及APK安装包
  13. 常德市六中2021年高考成绩查询,铆足“牛劲”,奋蹄新征程! ——常德市六中2021届高三教师牛年备战新高考...
  14. ubuntu20.04离线安装python2.7.17
  15. 员工缺乏责任心的四大原因
  16. 逆波兰式的产生及计算(C++/Java)---编译原理
  17. 团队任务3每日立会(2018-10-25)
  18. 使用CH341 I2C连接北醒TF系列I2C模式 Python例程
  19. python如何不以科学计数法形式输出小数
  20. 家用计算机选择什么网络好,200M宽带是否适合家庭使用?

热门文章

  1. [XSY] 传统游戏(DP、容斥)
  2. codeforces gym-101736 Dessert First Strategy 最小割
  3. Java IO: 文件
  4. Java通过Class的对象来获取泛型的class示例
  5. Java 注解指导手册 – 终极向导
  6. 大型网站架构利器-CDN技术
  7. 神奇,教你用随机数打印hello world
  8. TypeError: Cannot set property 'msg' of undefined
  9. freemarker中遇到null报错的处理方法
  10. 回忆四班的那些事儿~