長原始

預設情況下,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 個物件與==確實比較。