Am o întrebare simplă în Java: Cum pot converti un "String", care a fost obținută de Mult.toString()` a "mult timp"?
Folosi De Mult Timp.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
Pentru a converti un String o Lung **** (obiect), folosesc de mult Timp.valueOf(String s).longValue();`
A se vedea link
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());
}
}
}
Lung.valueOf(String s) - evident, din cauza de îngrijire trebuie să fie luate pentru a proteja împotriva non-numere dacă este posibil în cod.
Cea mai bună abordare este de mult Timp.valueOf(str)
, deoarece se bazează pe de mult Timp.valueOf(mult)
, care folosește un cache intern făcându-l mult mai eficient, deoarece se va reutiliza, dacă este necesar cache cazuri de "Lung" merge de la -128 la127
inclus.
Returnează un "Lung" de exemplu reprezentând specificate mult valoarea. Dacă o new Mult instanță nu este necesară, această metodă ar trebui să fie, în general, folosit în preferința pentru constructorul de Mult(timp)`, deoarece această metodă este susceptibile de a produce semnificativ mai mult spațiu și de performanță timp de caching solicitate frecvent valori. Rețineți că, spre deosebire de metodă corespunzătoare în număr Întreg de clasă, această metodă nu este necesară pentru a cache valori într-un anumit interval.
Datorită auto-unboxing care permite de a converti o clasa wrapper's instanță în corespunzătoare tip primitiv, codul ar fi:
long val = Long.valueOf(str);
Vă rugăm să rețineți că codul anterior poate arunca încă o NumberFormatExceptiondacă condiția
String` nu't se potrivesc cu o semnat "lung".
În general vorbind, este o bună practică de a utiliza "statice" fabrica metoda valueOf(str)
de o clasa wrapper ca "Întreg", "Boolean", "Lung", ... deoarece cele mai multe dintre ele reutilizarea instanțe ori de câte ori este posibil, ceea ce le face potențial mai eficientă în termen de amprenta de memorie decât cea corespunzătoare analiza
metodele sau constructorii.
Extras din Java Produs 1
scris de Joshua Bloch:
puteți evita de multe ori crearea de obiecte inutile prin utilizarea static metode fabrică (Element 1) în preferința pentru constructori pe imuabil clase care oferă pe amândouă. De exemplu, metoda fabrica static
Boolean.valueOf(String) este aproape întotdeauna de preferat pentru constructor
Boolean(String)`. Constructor crează un obiect nou de fiecare dată se numește, în timp ce fabrica static metodă nu este niciodată este necesar să facă acest lucru și nu în practică.
Există un mod de a converti șir la număr Întreg :
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();
Se poate scurta la:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
Sau
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.");
}
În cazul în care sunteți folosind Harta cu generic, atunci ai nevoie pentru a converti valoarea în Șir și apoi încercați pentru a converti la Timp. Mai jos este codul probă
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);