8 ответов:
использовать
Long.parseLong()Long.parseLong("0", 10) // returns 0L Long.parseLong("473", 10) // returns 473L Long.parseLong("-0", 10) // returns 0L Long.parseLong("-FF", 16) // returns -255L Long.parseLong("1100110", 2) // returns 102L Long.parseLong("99", 8) // throws a NumberFormatException Long.parseLong("Hazelnut", 10) // throws a NumberFormatException Long.parseLong("Hazelnut", 36) // returns 1356099454469L Long.parseLong("999") // returns 999L
для преобразования a строка до долго (объект), используйте
Long.valueOf(String s).longValue();посмотреть ссылке
public class StringToLong { public static void main (String[] args) { // String s = "fred"; // do this if you want an exception String s = "100"; try { long l = Long.parseLong(s); System.out.println("long l = " + l); } catch (NumberFormatException nfe) { System.out.println("NumberFormatException: " + nfe.getMessage()); } } }
долго.valueOf (строка s) - очевидно, необходимо проявлять должную осторожность, чтобы защитить от не-чисел, если это возможно в вашем коде.
лучший подход
Long.valueOf(str)как он полагается наLong.valueOf(long), который использует внутренний кэш, что делает его более эффективным, поскольку он будет использовать при необходимости кэшированные экземплярыLongпроисходит из-128до127включено.возвращает a
Longэкземпляр, представляющий указанное длинное значение. Если новый длинный экземпляр не требуется, этот метод обычно должен быть используется в предпочтении к конструкторуLong(long), так как этот метод есть вероятно, это приведет к значительно лучшей пространственной и временной производительности кэширование часто запрашиваемых значений. Обратите внимание, что в отличие от соответствующий метод в целочисленном классе, этот метод не требуется кэширование значений в определенном диапазоне.спасибо авто-распаковка позволяя преобразовать экземпляр класса-оболочки в соответствующий примитивный тип, код тогда будет:
long val = Long.valueOf(str);обратите внимание, что предыдущий код все еще может бросить
NumberFormatExceptionеслиStringне совпадает со знакомlong.вообще говоря, это хорошая практика, чтобы использовать
staticметод фабрикиvalueOf(str)класса оболочки, какInteger,Boolean,Long, ... поскольку большинство из них повторно используют экземпляры всякий раз, когда это возможно, что делает их потенциально более эффективными с точки зрения объема памяти, чем соответствующиеparseметоды или конструкторы.
выдержка из Эффективная Java
Item 1написано Джошуа Блох:вы часто можете избежать создания ненужных объектов с помощью статический заводские методы (пункт 1) в предпочтении к конструкторам на незыблемых классы, которые обеспечивают оба. Например, статический метод фабрики
Boolean.valueOf(String)почти всегда предпочтительнее конструкторBoolean(String). Конструктор создает новый объект каждый раз она называется, а статический метод фабрики никогда требуется сделать это и не будет на практике.
есть способ преобразовать строку в целое число:
1)
long l = Long.parseLong("200");2)
String numberAsString = "1234"; long number = Long.valueOf(numberAsString).longValue();3)
String numberAsString = "1234"; Long longObject = new Long(numberAsString); long number = longObject.longValue();мы можем укоротить до:
String numberAsString = "1234"; long number = new Long(numberAsString).longValue();Или Просто
long number = new Long("1234").longValue();4) используя декабрьский формат:
String numberAsString = "1234"; DecimalFormat decimalFormat = new DecimalFormat("#"); try { long number = decimalFormat.parse(numberAsString).longValue(); System.out.println("The number is: " + number); } catch (ParseException e) { System.out.println(numberAsString + " is not a valid number."); }
в случае, если вы используете карту с Out generic, то вам нужно преобразовать значение в строку, а затем попытаться преобразовать в Long. Ниже приведен пример кода
Map map = new HashMap(); map.put("name", "John"); map.put("time", "9648512236521"); map.put("age", "25"); long time = Long.valueOf((String)map.get("time")).longValue() ; int age = Integer.valueOf((String) map.get("aget")).intValue(); System.out.println(time); System.out.println(age);
для тех, кто перешел на Котлин просто использовать
string.toLong()
Это вызоветLong.parseLong(string)под капотом
Comments