我是架構師-基本類型-short

 

爲了能吸引您瞭解short,咱們先作個小測驗: java

如下問題能編譯經過嗎?能運行成功嗎?結果是什麼?git

Q1. short s1 = 9;short s2 = 011;
Q2. Short sob = 9; Short sob1 = new Short(9);
Q3. 若是成功獲得Q2的sob,sob1,那麼 sob.equal(sob1),sob.equal(0x11)是true or false;
Q4. Short sob = 128; sob.byteValue();拋異常嗎?
Q5. short s1 = 9 ; short s2 = 8; s = s1+s2; s1+=9; 可否正常編譯,運行 緩存

我朋友說,就像孔乙己問茴香豆的「茴」有幾種寫法(我不徹底否認,呵呵)。jvm

固然,若是願意,不妨看看。就像咱們千篇一概使用int 或者 ArrayList同樣,有一天,你也許會但願本身稍微能對細節把握的精準點。  ide

short 最大值 Short.MAX_VALUE = 32767 或者  2^15-1
最小值 Short.MIN_VALUE = –32768 或者 -2^15 性能

下面我對一些方法作些小注,除非我認爲非要API原翻譯信息來解釋此方法,我會借用。翻譯

method:hashcode 
包裝類型Short 的hashcode直接強轉(int)value; code

method:equal 
比較的是值,值相等,則返回true,若是參數對象不是short, 一樣返回false 對象

method :byteValue 返回byte值,若是 value<127 按照二進制碼,去低八位,高位第一位爲1表明負數。
例如:((byte)257 == 1) == true; ci

method: toString
jdk API:該值被轉換成有符號的十進制表示形式,並做爲一個字符串返回,正如將 short 值做爲一個參數指定給toString(short) 方法所獲得的值那樣。 

method: toString(short s)
返回表示指定 short 的一個新 String 對象,用十進制表示。  

method:parseShort(String s)

將字符串參數解析爲有符號的十進制 short。該字符串中的字符必須都是十進制數字,除非第一個字符是表示負值的 ASCII 符號中的負號 '-' ('\u002D')。返回獲得的 short 值,此值與用該參數和基數 10 做爲參數的 parseShort(java.lang.String, int) 方法獲得的值相同。 

 

method:parseShort(String s, int radix)

將字符串參數解析爲由第二個參數指定的基數中的有符號的 short。該字符串中的字符必須都是指定基數(這取決於 Character.digit(char, int) 是否返回非負值)的數字,除非第一個字符是表示負值的 ASCII 符號中的負號 「-」 ('\u002D')。返回獲得的 byte 值。

若是沒有以下狀況:
第一個參數是 null 或零長度的字符串。 基數小於 Character.MIN_RADIX 或大於 Character.MAX_RADIX
除了在字符串長度超過 1 的狀況下第一個字符多是負號 「-」 ('\u002D') 以外,字符串的任何字符都不是指定基數的數字。
字符串所表示的值不是 short 類型的值 
返回(short)value

method: valueof(String s)
調用了 new Short(Short.parseShort(s, radix)) 

method: valueof(short)
返回表示指定 short 值的 Short 實例。若是不須要新的 Short 實例,則一般應該優先採用此方法,而不是構造方法 Short(short),由於此方法極可能經過緩存常常請求的值來顯著提升空間和時間性能。

見代碼:

 if (sAsInt <=-128 && sAsInt >= 127) {
 // must cache
   return ShortCache.cache[sAsInt + offset]; 
 }

 

注:getInstance() ,valueof, of(valueof 簡潔寫法)一般被表達獲取一個實例,在靜態工廠方法中表現尤甚。

method : decode

解密8進制,16進製爲10進制int值

 

method :compareTo
比較的是value
 

method :reverseBytes(short)

操做:(((i & 0xFF00) > >8) | (i << 8))

  --((i & 0xFF00) >> 8) 去i 的前8位 放入後8位  

那咱們來回到開頭提到的5個問題,一切變得簡單。只有第五題,我給出一點提示:賦值運算符--簡單賦值運算符和複合賦值運算符。 

 

做個小小的總結:

1. 記住short的hashcode

2. compareTo 比較的是value,因此只要value相同,就返回true.

3. 除了聲明,jvm會在任何可能的地方把short變成int。

4. String轉換成short 優先選擇valueof,除非你很確認string的value.

相關文章
相關標籤/搜索