У мене просте питання в Java: Як я можу перетворити , String
який був отриманий Long.toString()
в long
?
У мене просте питання в Java: Як я можу перетворити , String
який був отриманий Long.toString()
в long
?
Відповіді:
Використовуйте 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();
Дивіться посилання
java.lang.Long
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());
}
}
}
Long.valueOf (String s) - очевидно, слід уважно ставитися до захисту від нечислових номерів, якщо це можливо у вашому коді.
Кращий підхід , 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
методи або конструкторах .
Уривок з ефективної Java, Item 1
написаний Джошуа Блохом :
Ви можете часто уникати створення непотрібних об'єктів, використовуючи статичні заводські методи (пункт 1), надаючи перевагу конструкторам з незмінних класів, які забезпечують і те, і інше. Наприклад, статичний заводський метод
Boolean.valueOf(String)
майже завжди кращий перед конструкторомBoolean(String)
. Конструктор створює новий об'єкт щоразу, коли його викликають, тоді як статичний заводський метод ніколи цього не вимагає і не буде на практиці.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
і в Long number = Long.valueOf(Long.parseString("123")
кінцевому підсумку робимо майже те саме. Те , що ви дійсно хочете бути обережними, не викликаючи конструктор боксових примітивних класів - це може бути марнотратними. Тому не пишітьLong number = new Long(parseLong("123"))
Існує певний спосіб перетворити рядок у цілий ряд :
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.valueOf(String s);
Наприклад:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
Ви закінчили !!!
Для тих, хто перейшов на Котлін, просто використовуйте
string.toLong()
That call Long.parseLong(string)
під капотом
Якщо ви використовуєте Map з загальним, вам потрібно перетворити значення в 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);