JDK 7 中的语法增强 -- (2) 数值常量中的下划线

再次进入到 JDK7 语法增强的第二道道上来,也就是数值常量书写时可以中间插入下划线作为分隔线,也就是 int i = 22_33 相当于 int i = 2233,仅仅是一定程度上的有助于阅读代码,除此之外,别无它处。编译后或执行时这些下划线便透明掉了,编译后的字节码里也没有了附加的下划线,当然执行时也不可能向你输出下整数 i 为 22_33 的。

也不知道是谁只是众目期盼中的版本净找些这类来增强,感觉意义不是很大,大约类同于二进制方式来表示整数。这里的数值包括整数和小数的,加上 16 进制那么可用来表示数字的字符就有 0-9 和 a-f(A-F) 了,注意下划线只能加在前面所列的某两个字符之间,而且可连续多个下划线。看例子吧:

下划线只能在两个数字之间; 只要记住这一点就足够的,放在别的两头不接数字的地方是要坚决被和谐的,像下面位置是不合法的:

  • 开始和结尾
  • 不能放在小数点的前后
  • 在  F(当它不表示数值的时候)L 后缀之前
  • In positions where a string of digits is expected

下面列出了一些数字常量中使用下划线的合法与非法的情况:

直接能想像到的便利就是十六进制或二进制表示字节的时候可以两位一组或八位一组,比如像二进制编辑器(UE) 那样分组显示字节般;还有就是中国人在方便阅读时可以在整数部分四个数字一组的标,万亿兆,相应的老美就可三个一组的分,分别是 K, M, B, G 下去。

上面的例子代码去说明下划线可以用在什么地方,不可以用在什么方,我觉得反而罗嗦了点,并没有说到点子上。其实一言(三条)以蔽之就是:

当下划线用于数值常量中时,它必须出现在两个数字之间,也就是它两端必须是数字;当 ox 开头的 16 进制数,a-f 或 A-F 也应认为是数字,8 进制时起始的 0 既是标识也是个数字;多个连续的下划线与一个下划线等效。

可以看过来:http://download.java.net/jdk7/docs/technotes/guides/language/underscores-literals.html

本文链接 https://yanbin.blog/jdk-7-enhance-underscores-literals/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments