2017-07-28 568 views
1

我最近偶然发现了Stack Overflow上的another question,其中一个人建议使用Short.parseShort(String s)和另一个Short.valueOf(String s)。Short.parseShort和Short.value之间的Java区别

我都一直自己,我发现在功能上没有区别和official Documentation并没有真正帮助我或者:

的Short.parseShort: 将字符串参数作为有符号的十进制short 。字符串中的字符必须全部为十进制数字,但第一个字符可能是ASCII减号' - '('\ u002D')以指示负值或ASCII加号'+'('\ u002B')。表示一个正值。返回结果short值,就好像参数和基数10作为parseShort(java.lang.String,int)方法的参数一样。

Short.valueOf: 返回一个Short对象,它包含由指定的String给定的值。该参数被解释为表示一个带符号的十进制小数,就好像该参数是给予parseShort(java.lang.String)方法一样。结果是一个Short对象,表示由该字符串指定的短值。

两者都接受附加参数radix,并且都抛出了NumberFormatException

他们似乎是相同的,但如果是这样的话,为什么两者都存在?

+3

的最大区别在于,'parseShort'返回一个原语'short',同时'valueOf'返回的一个实例包装类'java.lang.Short'。 – Jesper

+2

一个返回一个原始'short',另一个返回一个盒子'Short' – 4castle

+0

另外,除非你有充分的理由不这样做,否则你可能应该用'int' /'Integer'来代替。 – 4castle

回答

1

valueOf是使用parseShort内部并且另外的箱体型Short包裹值:

public static Short valueOf(String s, int radix) 
    throws NumberFormatException { 
    return valueOf(parseShort(s, radix)); 
}