Как конвертировать String в long в Java?
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
преобразование строка до долго (объект), используйте 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
включено.
возвращает
Long
экземпляр, представляющий указанное длинное значение. Если новый длинный экземпляр не требуется, этот метод обычно должен быть используется в предпочтении конструкторуLong(long)
, так как этот метод есть вероятно, значительно улучшится пространственно-временная производительность кэширование часто запрашиваемых значений. Обратите внимание, что в отличие от соответствующий метод в классе integer, этот метод не требуется кэширование значений в определенном диапазоне.
спасибо авто-распаковка позволяя преобразовать экземпляр класса-оболочки в соответствующий примитивный тип, код будет:
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) использование формата Decemal:
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.");
}
Если вы используете карту без универсального, вам нужно преобразовать значение в строку, а затем попытаться преобразовать в 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)
под капотом