第十九题(整数赋值)

来源:互联网 发布:互联网金融 加班 知乎 编辑:程序博客网 时间:2024/06/06 07:02

看到这题,也是醉了,没想到还可这么赋值,乍看之下,我以为题错了。

你觉得答案是什么?

ADF

B:找不到符号

C:过大的整数

E:可能损失精度

JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量。其中的一个特征是介绍字面常量数字的下划线。从Java7开始,你就可以在你的Java代码里把长整型数字比如10000000000写成一个更具可读性10_000_000_000。在字面常量数字中加下划线的一个重要的原因是避免一些难以通过看代码来发现的细微的错误。对比10000000000 和1000000000,我们很难发现少了一个0或多了一个0,但对于10_000_000_000和1_000_000_000却不然。所以如果你在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之间呢?

0 0
原创粉丝点击