Научитесь преобразовывать тип String в тип Long в Java с помощью методов Long.parseLong(String), Long.valueOf(String) и нового конструктора Long(String).
Номер строки = "2018"; //Строкадлинное значение1 = Long.parseLong( число, 10 );длинное значение2 = Длинное.значениеОф( число );длинное значение3 = новое длинное число(число);
1. Использование Long.valueOf(String)
Метод Long.valueOf() анализирует входную строку в десятичный тип long со знаком. Все символы в строке должны быть десятичными цифрами, за исключением того, что первый символ может быть знаком минус(-) для отрицательных чисел и знаком плюс(+) для положительных чисел.
Результирующее длинное значение точно такое же, как строковый аргумент в десятичной системе счисления. В следующем примере мы преобразуем одно положительное и одно отрицательное число в длинное значение.
String positiveNumber = "+12001";long value1 = Long.valueOf(positiveNumber); //12001LString negativeNumber = "-22002";long value2 = Long.valueOf(negativeNumber); //-22002L
Если строку невозможно проанализировать как длинную, выдается исключение NumberFormatException.
Assertions.assertThrows(NumberFormatException.class,() -> {Long.valueOf("alexa");});
2. Использование Long.parseLong(String)
Правила для метода Long.parseLong(String) также аналогичны правилам для метода Long.valueOf(String).
- Он анализирует аргумент String как десятичное длинное значение со знаком.
- Все символы в строке должны быть десятичными цифрами, за исключением того, что первым символом может быть знак минус(-) для отрицательных чисел и знак плюс(+) для положительных чисел.
- Полученное длинное значение точно такое же, как строковый аргумент в десятичной системе счисления.
Опять же, мы преобразуем одно положительное число и одно отрицательное число в длинное значение с помощью API parseLong().
String positiveNumber = "+12001";long value1 = Long.parseLong(positiveNumber); //12001LString negativeNumber = "-22002";long value2 = Long.parseLong(negativeNumber); //-22002L
Если входная строка находится в другой базе, то мы можем передать базу в качестве второго входа в метод.
String numberInHex = "-FF";long value = Long.parseLong(numberInHex); //-255L
3. Использование нового конструктора Long(String)
Другой полезный способ — использовать конструктор класса Long для создания нового длинного объекта. Этот метод устарел с Java 9, и рекомендуется использовать API parseLong(), как обсуждалось выше.
long value = new Long("100"); //100L
4. Исключение формата числа
При использовании любого из указанных подходов, если входная строка не содержит только десятичные символы(за исключением первого символа, который может быть знаком плюс или минус), мы получим ошибку NumberFormatException во время выполнения.
String number = "12001xyz";long value = Long.parseLong(number);//ErrorException in thread "main" java.lang.NumberFormatException: For input string: "12001xyz"at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Long.parseLong(Long.java:589)at java.lang.Long.<init>(Long.java:965)at com.howtodoinjava.StringExample.main(StringExample.java:9)