Java 基礎類型 —— Long

1 Long 類方法

  • 返回類型標 * 的是重點方法

1.1 toXXXString

返回類型 方法名 描述
String toString() toString(value)
* static String toString(long i) 有意思,這和 i+"" 區別在哪呢?內部調用 getChar()
* static String toString(long i, int radix) 將 long 值轉成 對應進制的 String 形式
static String toUnsignedString(long i) toUnsignedString(long i,10)
static String toUnsignedString(long i, int radix) 內部調用 toUnsignedString0(long val, int shift)
static String toHexString(long i) toUnsignedString0(i, 4)
static String toOctalString(long i) toUnsignedString0(i, 3)
static String toBinaryString(long i) toUnsignedString0(i, 1)
static String toUnsignedString0(long val, int shift) 內部是全是通過 val & mask,val >>>= shift,所以僅僅是通過 mask 取到每一部分的值對應的 radix,所以是無符號的
* static String formatUnsignedLong(…) toUnsignedString0 內部調用它,進行的掩模計算
* static BigInteger toUnsignedBigInteger(long i) 內部調用 BigInteger.valueOf(i)

1.2 parseLong(…) —— 將各種格式的 String 轉成 long

返回類型 方法名 描述
static long parseLong(String s) parseLong(String s, 10)
* static long parseLong(String s, int radix) 根據對應的進制,將 s 解析成對應的 long 值,用負數算(有意思)
static long parseUnsignedLong(String s) parseUnsignedLong(String s, 10)
* static long parseUnsignedLong(String s, int radix) 內部調用 parseLong(String s, int radix) 做處理

1.3 valueOf —— 將 String、long 轉成 Long

返回類型 方法名 描述
static Long valueOf(String s) Integer.valueOf(parseLong(s, 10))
static Long valueOf(String s, int radix) Integer.valueOf(parseLong(s,radix))
static Long valueOf(long l) 內部走Cache,LongCache 的範圍固定 [-128,127]

1.4 getLong—— 獲取系統參數值,並轉換爲 Long

返回類型 方法名 描述
static Long getLong(String nm) getLong(nm, null)
static Long getLong(String nm, long val) 內部調用 getLong(nm, null)
static Long getLong(String nm, Long val) 獲取系統 property 參數值,v = System.getProperty(nm),如果爲 null,返回 val 值

1.5 compare —— long 值比較

返回類型 方法名 描述
int compareTo(Long anotherLong) compare(this.value, anotherInteger.value)
static int compare(long x, long y) (x < y) ? -1 : ((x == y) ? 0 : 1)
static int compareUnsigned(long x, long y) compare(x + MIN_VALUE, y + MIN_VALUE)

1.6 unsigned long 的除/取餘

返回類型 方法名 描述
static long divideUnsigned(long dividend, long divisor) toUnsignedBigInteger(dividend). divide(toUnsignedBigInteger(divisor)).longValue()
static long remainderUnsigned(long dividend, long divisor) toUnsignedBigInteger(dividend). remainder(toUnsignedBigInteger(divisor)).longValue()

1.7 取 long 值最高/低位 1 對應的 值

返回類型 方法名 描述
* static long highestOneBit(long i) 最高位取最高 1 及後面全置0的值,代碼解析
* static long lowestOneBit(long i) i & -i

1.8 LeadingZeros/TrailingZeros/countBit

返回類型 方法名 描述
* static int numberOfLeadingZeros(long i) i 對應 2 進制的開頭 0 的個數
* static int numberOfTrailingZeros(long i) i 對應 2 進制的末尾 0 的個數
* static int bitCount(long i) i 對應 2 進制中 1 的個數

1.9 long 對應二進制的反轉

返回類型 方法名 描述
* static long rotateLeft(long i, int distance) (i << distance) | (i >>> -distance)
* static long rotateRight(long i, int distance) (i >>> distance) | (i << -distance)
* static long reverse(long i) 二進制按位反轉 :對應的2進制180°反轉
* static long reverseBytes(long i) 二進制按byte反轉
00000000_00000000_01001101_00011111 -> 原始
11111000_10110010_00000000_00000000 -> 按位反轉
00011111_01001101_00000000_00000000 -> 按字節反轉

1.10 sinum/sum/max/min

返回類型 方法名 描述
static long signum(long i) 負數返回 -1,0 返回 0,正數返回 1
static long sum(long a, long b) a + b
static long max(long a, long b) Math.max(a, b)
static long min(long a, long b) Math.min(a, b)

1.11 decode/hashCode/stringSize

返回類型 方法名 描述
static int stringSize(long x) x 的位數,x 必須爲非負
int hashCode() Long.hashCode(value)
static int hashCode(long value) (int)(value ^ (value >>> 32))
* static Long decode(String nm) 根據 nm 的類型,判斷它的進制,然後轉成 10 進制 Long

1.12 構造函數 Long(String)

  • 內部調用 parseLong(s,10)
  • 如果確定 long 很小,推薦使用 Long.valueOf(String):這樣可以走 cache

2 重點方法解析

  • 留待以後補充

參考

jdk1.8_171

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章