Ho una semplice domanda in Java: Come posso convertire una String
che è stata ottenuta Long.toString()
a long
?
Ho una semplice domanda in Java: Come posso convertire una String
che è stata ottenuta Long.toString()
a long
?
Risposte:
Uso 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
Per convertire una stringa in un lungo (oggetto), utilizzareLong.valueOf(String s).longValue();
Vedi link
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) - ovviamente è necessario prestare la dovuta attenzione per proteggere dai non numeri se ciò è possibile nel proprio codice.
L'approccio migliore è Long.valueOf(str)
quanto si basa su Long.valueOf(long)
che utilizza una cache interna rendendolo più efficiente, in quanto riutilizzerà se necessario, le istanze memorizzate nella cache di Long
andare da -128
a 127
inclusi.
Restituisce
Long
un'istanza che rappresenta il valore lungo specificato. Se non è richiesta una nuova istanza Long, questo metodo dovrebbe generalmente essere usato in preferenza rispetto al costruttoreLong(long)
, poiché è probabile che questo metodo produca prestazioni significativamente migliori in termini di spazio e tempo memorizzando nella cache i valori richiesti frequentemente. Si noti che, diversamente dal metodo corrispondente nella classe Integer, questo metodo non è richiesto per memorizzare nella cache valori all'interno di un intervallo particolare.
Grazie all'auto -unboxing che consente di convertire l'istanza di una classe wrapper nel tipo primitivo corrispondente, il codice sarebbe quindi:
long val = Long.valueOf(str);
Si noti che il codice precedente può comunque generare un NumberFormatException
se il fornito String
non corrisponde a un segno long
.
In generale, si tratta di una buona pratica di utilizzare il static
metodo factory valueOf(str)
di una classe wrapper come Integer
, Boolean
, Long
, ... dal momento che la maggior parte di riutilizzarli casi ogni volta che è possibile, che li rende potenzialmente più efficiente in termini di occupazione di memoria rispetto ai corrispondenti parse
metodi o costruttori .
Estratto da Effective Java Item 1
scritto da Joshua Bloch :
Spesso è possibile evitare la creazione di oggetti non necessari utilizzando metodi factory statici (elemento 1) in preferenza ai costruttori su classi immutabili che forniscono entrambi. Ad esempio, il metodo statico di fabbrica
Boolean.valueOf(String)
è quasi sempre preferibile al costruttoreBoolean(String)
. Il costruttore crea un nuovo oggetto ogni volta che viene chiamato, mentre il metodo factory statico non è mai richiesto per farlo e in pratica non lo farà.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
e Long number = Long.valueOf(Long.parseString("123")
tutti finiscono per fare praticamente la stessa cosa. Quello che non vuole essere attenti a non sta chiamando i costruttori delle classi primitive in scatola - che può essere uno spreco. Quindi non scrivereLong number = new Long(parseLong("123"))
Esistono alcuni modi per convertire la stringa in intero :
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();
Possiamo abbreviare a:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
O solo
long number = new Long("1234").longValue();
4) Utilizzando il formato 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.");
}
È abbastanza semplice, usa
Long.valueOf(String s);
Per esempio:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
Hai finito!!!
Per coloro che sono passati a Kotlin basta usare
string.toLong()
Quello chiamerà Long.parseLong(string)
sotto il cofano
Nel caso in cui si stia utilizzando la Mappa senza un generico, è necessario convertire il valore in String e quindi provare a convertire in Long. Di seguito è riportato un codice di esempio
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);