长原始
默认情况下,long
是一个 64 位有符号整数(在 Java 8 中,它可以是有符号或无符号的)。签名后,它可以存储最小值 -2 63 ,最大值为 2 63 - 1,无符号它可以存储最小值 0 和最大值 2 64 - 1
long example = -42;
long myLong = 284;
long anotherLong = 73;
//an "L" must be appended to the end of the number, because by default,
//numbers are assumed to be the int type. Appending an "L" makes it a long
//as 549755813888 (2 ^ 39) is larger than the maximum value of an int (2^31 - 1),
//"L" must be appended
long bigNumber = 549755813888L;
long addedLongs = myLong + anotherLong; // 284 + 73 = 357
long subtractedLongs = myLong - anotherLong; // 284 - 73 = 211
long
的最大值和最小值可在以下位置找到:
long high = Long.MAX_VALUE; // high == 9223372036854775807L
long low = Long.MIN_VALUE; // low == -9223372036854775808L
long
的默认值为 0L
long defaultLong; // defaultLong == 0L
注意:long
文字末尾附加的字母 L
不区分大小写,但是使用大写是一种好习惯,因为它更容易区别于数字:
2L == 2l; // true
警告:Java 缓存 -128 到 127 范围内的 Integer 对象实例。这里解释了推理: https : //blogs.oracle.com/darcy/entry/boxing_and_caches_integer_valueof
可以找到以下结果:
Long val1 = 127L;
Long val2 = 127L;
System.out.println(val1 == val2); // true
Long val3 = 128L;
Long val4 = 128L;
System.out.println(val3 == val4); // false
要正确比较 2 个 Object Long 值,请使用以下代码(从 Java 1.7 开始):
Long val3 = 128L;
Long val4 = 128L;
System.out.println(Objects.equal(val3, val4)); // true
将基元长度与长对象进行比较不会导致错误否定,例如将 2 个对象与==确实比较。