Ich habe eine einfache Frage in Java: Wie kann ich eine umwandeln , String
die von erhalten Long.toString()
zu long
?
Ich habe eine einfache Frage in Java: Wie kann ich eine umwandeln , String
die von erhalten Long.toString()
zu long
?
Antworten:
Verwenden 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
Verwenden Sie zum Konvertieren eines Strings in ein Long (Objekt)Long.valueOf(String s).longValue();
Siehe 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) - Offensichtlich muss sorgfältig darauf geachtet werden, sich vor Nicht-Zahlen zu schützen, wenn dies in Ihrem Code möglich ist.
Der beste Ansatz ist, Long.valueOf(str)
wie er sich verlässtLong.valueOf(long)
welche verwendet einen internen Cache , damit es effizienter , da sie wiederverwendet werden , wenn die zwischengespeicherten Instanzen benötigt Long
aus gehen -128
zu 127
enthalten.
Gibt eine
Long
Instanz zurück, die den angegebenen langen Wert darstellt. Wenn keine neue Long-Instanz erforderlich ist, sollte diese Methode im Allgemeinen dem Konstruktor vorgezogen werdenLong(long)
, da diese Methode wahrscheinlich eine erheblich bessere räumliche und zeitliche Leistung liefert, indem häufig angeforderte Werte zwischengespeichert werden. Beachten Sie, dass diese Methode im Gegensatz zur entsprechenden Methode in der Integer-Klasse nicht erforderlich ist, um Werte innerhalb eines bestimmten Bereichs zwischenzuspeichern.
Dank an automatischen Unboxing , mit dem die Instanz einer Wrapper-Klasse in den entsprechenden primitiven Typ konvertiert werden kann, lautet der Code dann:
long val = Long.valueOf(str);
Bitte beachten Sie, dass der vorherige Code immer noch a auslösen kann NumberFormatException
wenn der angegebeneString
nicht mit einem signierten übereinstimmt long
.
Im Allgemeinen ist es eine gute Praxis, die static
Factory-Methode valueOf(str)
einer Wrapper-Klasse wie Integer
:Boolean
, Long
, ... da die meisten von ihnen Instanzen wiederverwenden , wenn es möglich ist , so dass sie möglicherweise effizienter in der Bezeichnung des Speicherbedarfs als die entsprechenden parse
Methoden oder Konstruktoren .
Auszug aus Effective Java Item 1
von Joshua Bloch :
Sie können häufig vermeiden, unnötige Objekte zu erstellen, indem Sie statische Factory-Methoden (Element 1) anstelle von Konstruktoren für unveränderliche Klassen verwenden, die beides bereitstellen. Beispielsweise ist die statische Factory-Methode
Boolean.valueOf(String)
dem Konstruktor fast immer vorzuziehenBoolean(String)
. Der Konstruktor erstellt bei jedem Aufruf ein neues Objekt, während die statische Factory-Methode dies niemals erfordert und in der Praxis nicht der Fall ist.
Long number = Long.valueOf("123")
, Long number = Long.parseLong("123")
und Long number = Long.valueOf(Long.parseString("123")
alle machen am Ende so ziemlich das Gleiche. Was Sie tun werden wollen vorsichtig ist nicht Konstrukteuren der boxed primitiven Klassen fordern - das kann verschwenderisch sein. Also nicht schreibenLong number = new Long(parseLong("123"))
Es gibt eine Möglichkeit, Zeichenfolgen in Ganzzahlen umzuwandeln :
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();
Wir können verkürzen auf:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
Oder nur
long number = new Long("1234").longValue();
4) Verwenden des Decemal-Formats:
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.");
}
Es ist ganz einfach zu benutzen
Long.valueOf(String s);
Zum Beispiel:
String s;
long l;
Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);
Du bist fertig!!!
Für diejenigen, die zu Kotlin gewechselt sind, verwenden Sie einfach
string.toLong()
That Long.parseLong(string)
unter der Haube
Wenn Sie die Map ohne generisches Format verwenden, müssen Sie den Wert in String konvertieren und dann versuchen, ihn in Long zu konvertieren. Unten finden Sie einen Beispielcode
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);