У меня возник простой вопрос по Java: Как преобразовать строку
, полученную с помощью Long.toString()
, в длинную
?
Используйте 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
Чтобы преобразовать String в Long (объект), используйте 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)][1] - очевидно, из-за ухода должны быть приняты для защиты от не-числа если это возможно в вашем коде.
[1]: http://download.oracle.com/javase/1,5.0/документов/по API/Ява/Ланг/долго.сообщение: метод valueOf%28java.яз.Строка%29
Самый лучший подход долго.метод valueOf(ул.)
, поскольку оно опирается на долго.метод valueOf(долго)
, который использует внутренний кэш, что делает его более эффективным, поскольку он будет использовать при необходимости кэшированные экземпляры "длинные" происходит от -128 до 127` включен.
возвращает "длинные" экземпляр, представляющий указанное значение Long. Если новый длинный экземпляр не требуется, этот метод, как правило, следует используется в предпочтении к длинной конструктор `(длинный), как этот метод вероятно, приведет к значительно лучшей производительности пространства и времени, кэширование часто запрашиваемых значений. Обратите внимание, что в отличие от соответствующий метод в классе integer, этот метод не требуется > в кэш значений в пределах определенного диапазона.
Благодаря авто-распаковка, позволяющие конвертировать класса'ы экземпляра в его соответствующего примитивного типа, то код будет:
long val = Long.valueOf(str);
Обратите внимание, что предыдущий код еще может выкинуть `NumberFormatException, если строка предоставленное `` не'т совпадают с подписью "длинные".
Вообще говоря, это хорошая практика, чтобы использовать статический
фабрика метод метод valueOf(ул.)
из класса, как целое
, логическое
, долго
, ... так как большинство из них использовать случаях, когда это возможно, что делает их потенциально более эффективными в плане памяти, чем соответствующий разбора
методов или конструкторов.
Выдержка из эффективная Java пункт 1
написано Джошуа блох:
вы часто можете избежать создания ненужных объектов с помощью статический фабрика методами (пункт 1) в предпочтении к конструкторам на незыблемых классы, которые обеспечивают оба. Например, статический метод фабрики
логическое.метод valueOf(строка) - это почти всегда предпочтительнее логический конструктор
(строка)`. Конструктор создает новый объект каждый раз это называется, в то время как статический метод фабрики, никогда не требуется делать так, а не на практике.
Существует несколько способов преобразования строки в число. :
long l = Long.parseLong("200");
String numberAsString = "1234";
long number = Long.valueOf(numberAsString).longValue();
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();
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.");
}
Для тех, кто перешел на Котлин просто использовать строку.толонг()` Что буду называть долго.parseLong(string), которые под капотом
В случае, если вы используете карту с дженерик, то вам нужно преобразовать значение в строку, а затем попытаться конвертировать в 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);