为什么Java7开始在数字中使用下划线(Java7怎样在数字中使用下划线)

来源:互联网 发布:火炬之光2mac版mod 编辑:程序博客网 时间:2024/05/29 03:39

本文转载自ImportNew,原文链接: javacodegeeks 翻译: ImportNew.com 刁 文阳 译文链接: http://www.importnew.com/12998.html

JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量。其中的一个特征是介绍字面常量数字的下划线。从Java7开始,你就可以在你的Java代码里把长整型数字比如10000000000写成一个更具可读性10_000_000_000。在字面常量数字中加下划线的一个重要的原因是避免一些难以通过看代码来发现的细微的错误。对比10000000000 和1000000000,我们很难发现少了一个0或多了一个0,但对于10_000_000_000和1_000_000_000却不然。所以如果你在Java源码中要处理大数字,你可以在数字中加入下划线来提高可读性。使用的时候要注意:在字面常量数字里加下划线是有一定规则的,下划线只能在数字之间,在数字的开始或结束一定不能使用下划线。在本章节的以下部分,我们将学习如何在字面常量数字中使用下划线,以及在字面常量数字中使用它们的规则。

怎样在Java中有效的给数字使用下划线

正如我之前说的,这不过是个语法糖,非常像字符串在 switch 场景下的实现,这也是使用编译器的帮助下实现的。编译期间,编译器把这些下划线移除,并把真实的数字赋值给变量。比如在编译期间10_000_000将会被转化成10000000。既然CPU在处理长数字上毫无压力,对于我们这些可怜的在处理长数字上有困难的人类来说,就不用为它烦恼了。这个特征尤其在需要处理大数额金钱、信用卡号码、银行账号以及其它需要长账号的银行和金融领域更有用。尽管在写Java文件里写敏感信息很让人沮丧,我们应该永远不要在编码的时候这么做。但在数字中用下划线让我们的生活比以前变得更加简单了。

在Java中给数字加下划线的规则

Java编码语言对给数值型的字面值加下划线有严格的规定。如上所述,你只能在数字之间用下划线。你不能用把一个数字用下划线开头,或者已下划线结尾。这里有一些其它的不能在数值型字面值上用下划线的地方:

  • 在数字的开始或结尾
  • 对浮点型数字的小数点附件
  • F或L下标的前面
  • 该数值型字面值是字符串类型的时候

这里有一些例子,来表现哪些地方加给数字加下划线有效,哪些地方给数字加下划线无效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
floatpi1 = 3_.1415F; // 无效的; 不能在小数点之前有下划线
floatpi2 = 3._1415F;// 无效的; 不能在小数点之后有下划线
longsocialSecurityNumber1 = 999_99_9999_L; //无效的,不能在L下标之前加下划线
inta1 = _52; // 这是一个下划线开头的标识符,不是个数字
inta2 = 5_2; // 有效
inta3 = 52_; // 无效的,不能以下划线结尾
inta4 = 5_______2; // 有效的
inta5 = 0_x52; // 无效,不能在0x之间有下划线
inta6 = 0x_52; // 无效的,不能在数字开头有下划线
inta7 = 0x5_2; // 有效的 (16进制数字)
inta8 = 0x52_; // 无效的,不能以下划线结尾
inta9 = 0_52; // 有效的(8进制数)
inta10 = 05_2; // 有效的(8进制数)
inta11 = 052_; // 无效的,不能以下划线结尾

下面是一些在数字中用下划线的其它示例:

1
2
3
4
5
6
7
8
longcreditCardNumber = 6684_5678_9012_3456L; // 在编码的时候,最好永远不要这么做
longsocialSecurityNumber = 333_99_9999L; // 在编码的时候,最好永远不要这么做
floatpi = 3.14_15F;
longhexBytes = 0xFF_EC_DE_5E;
longhexWords = 0xCAFE_BABE;
longmaxLong = 0x7fff_ffff_ffff_ffffL;
bytenybbles = 0b0010_0101;
longbytes = 0b11010010_01101001_10010100_10010010;

使用下划线后,你会发现你的代码比以前可读性更强。顺便说一句,在java中应该一直用L去表示一个长整型数字。尽管用小写的l表示长整型数也是合法的,但他看起来太像1了,所以应该永远都不要用它。告诉我你能不能再 12l和121之间找出差别,我猜能找到的人不多吧。但是在 12L与121之间呢?

总之,要养成在数字中使用下划线的习惯,尤其是对长整型数来说,这样能增加它的可读性。我知道这个功能只是从Java1.7开始才有效,还没有被广泛的使用。但鉴于Java1.8的现状,我期望Java8在Java社区中传播比Java7更加迅速更加广泛。



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 十个月晚上奶水不够吃怎么办 产妇晚上奶水不够吃怎么办 刚出生的宝宝不吃母乳怎么办 宝宝六个月奶不够吃怎么办 六个月奶不够吃怎么办 刚出生奶不够吃怎么办 做梦醒了看见鬼怎么办 宝宝到陌生地方哭闹怎么办 大人生病住院小孩没人带怎么办 孕妇被小猫抓了怎么办 怀孕了家里有猫怎么办 厕所被湿纸巾堵了怎么办 5天新生儿不拉屎怎么办 4月宝宝不拉屎怎么办 两岁宝宝晚上睡觉哭闹怎么办 2月婴儿吐奶很多怎么办 心情不好回奶了怎么办 四个月了没奶怎么办 八岁宝宝还尿床怎么办 自己一人在家害怕怎么办 被猫抓伤流血了怎么办 被小狐狸咬了怎么办 怀孕吃了兔子肉怎么办 鸟总在窗子上啄怎么办? 有鸟飞进楼道里怎么办 租的房间房东要求改建怎么办 小偷偷钱抓住不还钱怎么办 损友圈羊被陌生人偷了怎么办 在酒店如果遇到客人偷东西怎么办 梦见家里有不好的东西怎么办 被小孩要破了怎么办啊 租一个房子小孩一进房就哭怎么办 墙缝里有蝙蝠窝怎么办 小蝙蝠在墙缝里怎么办 小孩一进屋就哭怎么办 屋门对着厕所门怎么办 入室门对厨房门怎么办 厕所正对入户门怎么办 小区楼交错冲路怎么办 床的位置在五鬼上怎么办 被甩了很痛苦怎么办