Разница в Java между Short.parseShort и Short.valueOf

Недавно я наткнулся на еще один вопрос о переполнении стека, где один человек предлагает использовать Short.parseShort (String s) и другой Short.valueOf (String s).

Я попробовал оба варианта и не обнаружил разницы в функциональности и официальная документация мне тоже не помогла:

Short.parseShort: разбирает строковый аргумент как сокращенное десятичное число со знаком. Все символы в строке должны быть десятичными цифрами, за исключением того, что первый символ может быть знаком минус ASCII '-' ('\ u002D'), чтобы указать отрицательное значение, или знаком плюс ASCII '+' ('\ u002B') для обозначения положительного значения. Полученное короткое значение возвращается точно так же, как если бы аргумент и основание системы счисления 10 были переданы в качестве аргументов методу parseShort (java.lang.String, int).

Short.valueOf: возвращает объект Short, содержащий значение, заданное указанной строкой. Аргумент интерпретируется как представление сокращенного десятичного числа со знаком, точно так же, как если бы аргумент был передан методу parseShort (java.lang.String). Результатом является объект Short, представляющий короткое значение, указанное в строке.

Оба принимают дополнительный параметр radix, и оба выдают NumberFormatException.

Они кажутся идентичными, но если это так, то почему оба существуют?


person Crowley Astray    schedule 28.07.2017    source источник
comment
Самая большая разница в том, что parseShort возвращает примитив short, а valueOf возвращает экземпляр класса-оболочки java.lang.Short.   -  person Jesper    schedule 28.07.2017
comment
Один возвращает примитив short, другой возвращает упакованный Short   -  person 4castle    schedule 28.07.2017
comment
Кроме того, если у вас нет веской причины не делать этого, вы, вероятно, должны использовать вместо этого _1 _ / _ 2_.   -  person 4castle    schedule 28.07.2017
comment
Спасибо за все ответы (и извините за то, что не увидел Дубликат). @ 4castle Я использую short, потому что хочу заставить своих коллег использовать подходящие значения (они считываются из конфигурации, следовательно, преобразование String)   -  person Crowley Astray    schedule 28.07.2017
comment
@CrowleyAstray Я надеюсь, что вы знаете, что составляет соответствующие ценности. Возможно, вас заинтересует этот вопрос: Почему так много чисел, которые я вижу, подписаны, а не должны быть?. В ответах обсуждается, почему int часто является лучшим выбором.   -  person 4castle    schedule 28.07.2017


Ответы (1)


valueOf использует parseShort внутри и дополнительно обертывает значение в коробочном типе Short:

public static Short valueOf(String s, int radix)
    throws NumberFormatException {
    return valueOf(parseShort(s, radix));
}
person Grzegorz Piwowarek    schedule 28.07.2017