Long.valueOf (String s) дает Long (объект), а Long.valueOf (String s) .longValue () дает long (примитив).
Чемпион
27
publicclassStringToLong{publicstaticvoid main (String[] args){// String s = "fred"; // do this if you want an exceptionString s ="100";try{long l =Long.parseLong(s);System.out.println("long l = "+ l);}catch(NumberFormatException nfe){System.out.println("NumberFormatException: "+ nfe.getMessage());}}}
Наилучший подход заключается Long.valueOf(str)в том, что он Long.valueOf(long)использует внутренний кэш, что делает его более эффективным, поскольку при необходимости он будет повторно использовать кэшированные экземпляры Longперехода от включенного -128к 127включенному.
Возвращает Longэкземпляр, представляющий указанное длинное значение. Если новый экземпляр Long не требуется, этот метод обычно следует использовать в предпочтении перед конструктором Long(long), поскольку этот метод, вероятно, даст значительно лучшую производительность в пространстве и времени за счет кэширования часто запрашиваемых значений. Обратите внимание, что в отличие от соответствующего метода в классе Integer, этот метод не требуется для кэширования значений в определенном диапазоне.
Благодаря автоматической распаковке, позволяющей преобразовать экземпляр класса-оболочки в соответствующий ему примитивный тип, код будет:
long val =Long.valueOf(str);
Обратите внимание, что предыдущий код все еще может выдать, NumberFormatExceptionесли предоставленный Stringне совпадает с подписанным long.
Вообще говоря, это хорошая практика , чтобы использовать staticфабричный метод valueOf(str)класса - оболочки , как Integer, Boolean, Long, ... , так как большинство из них повторно экземпляров всякий раз , когда это возможно , что делает их потенциально более эффективными в срок объем памяти , чем соответствующие parseметоды или конструкторах ,
Вы можете часто избегать создания ненужных объектов, используя статические фабричные методы (элемент 1), а не конструкторы неизменяемых классов, которые предоставляют оба. Например, метод статической фабрики
Boolean.valueOf(String)почти всегда предпочтительнее конструктора Boolean(String). Конструктор создает новый объект каждый раз, когда он вызывается, в то время как статический метод фабрики никогда не требует этого и на практике не будет.
Стоит отметить, что автоматическая распаковка "откатывается" компилятором в случае long -> Long, Long.valueOf (primitiveLong). Таким образом Long number = Long.valueOf("123"), Long number = Long.parseLong("123")и Long number = Long.valueOf(Long.parseString("123")все в конечном итоге делает почти то же самое. То , что вы действительно хотите быть осторожными, не вызывая конструктор боксовых примитивных классов - это может быть расточительными. Так что не пишитеLong number = new Long(parseLong("123"))
Ян Робертсон
4
Есть несколько способов преобразовать строку в Integer :
1)
long l =Long.parseLong("200");
2)
String numberAsString ="1234";long number =Long.valueOf(numberAsString).longValue();
3)
String numberAsString ="1234";Long longObject =newLong(numberAsString);long number = longObject.longValue();
Мы можем сократить до:
String numberAsString ="1234";long number =newLong(numberAsString).longValue();
Или просто
long number =newLong("1234").longValue();
4) Использование формата Decemal:
String numberAsString ="1234";DecimalFormat decimalFormat =newDecimalFormat("#");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.");}
В случае, если вы используете Map без использования generic, вам необходимо преобразовать значение в String, а затем попытаться преобразовать в Long. Ниже приведен пример кода
Map map =newHashMap();
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);
Ответы:
использование
Long.parseLong()
источник
Чтобы преобразовать String в Long (объект), используйте
Long.valueOf(String s).longValue();
Смотрите ссылку
источник
java.lang.Long
источник
Long.valueOf (String s) - очевидно, что нужно соблюдать осторожность, чтобы защитить от не чисел, если это возможно в вашем коде.
источник
Наилучший подход заключается
Long.valueOf(str)
в том, что онLong.valueOf(long)
использует внутренний кэш, что делает его более эффективным, поскольку при необходимости он будет повторно использовать кэшированные экземплярыLong
перехода от включенного-128
к127
включенному.Благодаря автоматической распаковке, позволяющей преобразовать экземпляр класса-оболочки в соответствующий ему примитивный тип, код будет:
Обратите внимание, что предыдущий код все еще может выдать,
NumberFormatException
если предоставленныйString
не совпадает с подписаннымlong
.Вообще говоря, это хорошая практика , чтобы использовать
static
фабричный методvalueOf(str)
класса - оболочки , какInteger
,Boolean
,Long
, ... , так как большинство из них повторно экземпляров всякий раз , когда это возможно , что делает их потенциально более эффективными в срок объем памяти , чем соответствующиеparse
методы или конструкторах ,Выдержка из « Эффективной Явы»,
Item 1
написанная Джошуа Блохом :источник
Long number = Long.valueOf("123")
,Long number = Long.parseLong("123")
иLong number = Long.valueOf(Long.parseString("123")
все в конечном итоге делает почти то же самое. То , что вы действительно хотите быть осторожными, не вызывая конструктор боксовых примитивных классов - это может быть расточительными. Так что не пишитеLong number = new Long(parseLong("123"))
Есть несколько способов преобразовать строку в Integer :
1)
2)
3)
Мы можем сократить до:
Или просто
4) Использование формата Decemal:
источник
Это довольно просто, использовать
Long.valueOf(String s);
Например:
Вы сделали !!!
источник
Для тех, кто перешел на Kotlin, просто используйте
string.toLong()
То, что будет звонить
Long.parseLong(string)
под капотомисточник
В случае, если вы используете Map без использования generic, вам необходимо преобразовать значение в String, а затем попытаться преобразовать в Long. Ниже приведен пример кода
источник