JDK原始碼閱讀之Short

2021-09-26 19:45:04 字數 3646 閱讀 7660

short是基本型別short的包裝類,現在我們一起看看它的原始碼吧!

通過類圖和原始碼我們可以知道short是不可被繼承的,並且short的物件是可以比較的,由於short繼承了number(這是乙個抽象類),所以short重寫了其所有形如***value的方法。

//獲取short的class

private

final

short value;

public

static

final

int size =16;

/表示二進位制補碼形式的short值的位數,16位

public

static

final

int bytes = size / byte.size;

表示二進位制補碼形式的short值的位元組數,2位元組

short物件的值保持在value中,並且value是不可變的。

public

short

(short value)

public

short

(string s)

throws numberformatexception

public

static

short

parseshort

(string s,

int radix)

throws numberformatexception

short有兩個構造方法,乙個是直接接受乙個short型別的值即可,將其賦值給value;另乙個接受乙個字串型別資料(必須是數字字串),通過parseshort方法將其轉換(十進位制),實際上是使用integer.parseint將字串進行轉換,如果字串為null或長度為0(如果首字元為-或+長度要大於1)則丟擲numberformatexception異常,傳遞的字串值區間為[-32768,32767],超出此範圍丟擲numberformatexception異常資訊。

private

static

class

shortcache

static

final short cache=

newshort[-

(-128)

+127+1

];static

}public

static short valueof

(string s,

int radix)

throws numberformatexception

public

static short valueof

(string s)

throws numberformatexception

public

static short valueof

(short s)

return

newshort

(s);

}

short同樣能夠快取-128~127之間的數字,並且這個大小是不可調的,而integer的cache是可以調整的。如果傳遞的值在快取區間則從快取中取值,否則新建立例項物件。

public

static short decode

(string nm)

throws numberformatexception

decode方法將字串解碼為short,此方法接受十進位制字串,十六進製制字串(用0x\0x#標識),八進位制字串(用0標識),但是解碼後的值必須在[-32768,32767]這一區間內,否則丟擲numberformatexception異常。

public

byte

bytevalue()

public

short

shortvalue()

public

float

floatvalue()

public

double

doublevalue()

public

intintvalue()

public

long

lon**alue()

這六個方法都是繼承自number類,將value值強轉為對應的型別。

public

inthashcode()

public

static

inthashcode

(short value)

short物件的hash值即為其value值。

首先判斷obj是否為short的例項,再判斷value是否相同。

public

intcompareto

(short anothershort)

public

static

intcompare

(short x,

short y)

返回大於0前者大於後者,等於0兩者相等,小於0前者小於後者。

public

static

short

reversebytes

(short i)

將short二進位制的高八位和低八位交換。

public

static

inttounsignedint

(short x)

將short型別的數轉換為無符號的int型別。

public

static

long

tounsignedlong

(short x)

將short型別的數轉換為無符號的long型別。

文章同步【個人站】

JDK 原始碼 閱讀

to be continuing.持續修改中。1.stringbuffer 所處類層次 易忽略點 這個類是執行緒安全的。所有的method直接或間接加synchronized。所以我們如果是單執行緒情況下也考慮到這個會不會影響到效率。當然可能jit可以進行這個優化,待我接下來驗證。預設情況下乙個長為...

jdk原始碼閱讀 linkedlist

首先還是從建構函式開始 constructs an empty list.public linkedlist 是乙個空的 然後我們從add看 public boolean add e e 定位到linklast void linklast e e 觀察發現這個node是乙個雙向鍊錶,每乙個節點指著自...

JDK原始碼閱讀 Integer

先上一版字串轉數值的幾個方法的區別 parseint string s 解析字串數,10進製,返回int parseint string s,int radix 解析字串數,radix為指定進製,支援2 36進製 decode string nm 解析字串數,0開頭的為8進製,如010解析為2 0x...