为了能吸引您了解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.