Java语言的long

示例

默认情况下,它long是一个64位有符号整数(在Java 8中,它可以是有符号的或无符号的)。签名,它可以存储-2最小值63,和2的最大值63 - 1,和unsigned它可以存储的最小值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
//因为549755813888(2 ^ 39)大于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;    // 高== 9223372036854775807L
long low = Long.MIN_VALUE;     // 低== -9223372036854775808L

的默认值long是0L

long defaultLong;    // defaultLong == 0升

注意:在long文字末尾附加字母“ L”不区分大小写,但是使用大写字母是一种好习惯,因为它更容易与数字1区别开:

2L == 2l;            // 真正

警告: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); // 真正

Long val3 = 128L;
Long val4 = 128L;

System.out.println(val3 == val4); // 假

要正确比较2个Object Long值,请使用以下代码(从Java 1.7开始):

Long val3 = 128L;
Long val4 = 128L;

System.out.println(Objects.equal(val3, val4)); // 真正

比较一个基元长的对象和一个对象长的对象不会像使用==比较两个对象那样导致假阴性。