Long.valueOf (String s) gibt ein Long (Objekt) und Long.valueOf (String s) .longValue () gibt das Long (Primitiv) an.
Champ
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 (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 Longaus gehen -128zu 127enthalten.
Gibt eine LongInstanz zurück, die den angegebenen langen Wert darstellt. Wenn keine neue Long-Instanz erforderlich ist, sollte diese Methode im Allgemeinen dem Konstruktor vorgezogen werden Long(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 staticFactory-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 parseMethoden oder Konstruktoren .
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 vorzuziehen Boolean(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.
Es ist erwähnenswert, dass das automatische Entpacken vom Compiler für den Fall von long -> Long, Long.valueOf (primitiveLong) "desugiert" wird. Also 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"))
Ian Robertson
4
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 =newLong(numberAsString);long number = longObject.longValue();
Wir können verkürzen auf:
String numberAsString ="1234";long number =newLong(numberAsString).longValue();
Oder nur
long number =newLong("1234").longValue();
4) Verwenden des Decemal-Formats:
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.");}
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 =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);
Antworten:
Verwenden
Long.parseLong()
quelle
Verwenden Sie zum Konvertieren eines Strings in ein Long (Objekt)
Long.valueOf(String s).longValue();
Siehe Link
quelle
java.lang.Long
quelle
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.
quelle
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ötigtLong
aus gehen-128
zu127
enthalten.Dank an automatischen Unboxing , mit dem die Instanz einer Wrapper-Klasse in den entsprechenden primitiven Typ konvertiert werden kann, lautet der Code dann:
Bitte beachten Sie, dass der vorherige Code immer noch a auslösen kann
NumberFormatException
wenn der angegebeneString
nicht mit einem signierten übereinstimmtlong
.Im Allgemeinen ist es eine gute Praxis, die
static
Factory-MethodevalueOf(str)
einer Wrapper-Klasse wieInteger
: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 entsprechendenparse
Methoden oder Konstruktoren .Auszug aus Effective Java
Item 1
von Joshua Bloch :quelle
Long number = Long.valueOf("123")
,Long number = Long.parseLong("123")
undLong 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)
2)
3)
Wir können verkürzen auf:
Oder nur
4) Verwenden des Decemal-Formats:
quelle
Es ist ganz einfach zu benutzen
Long.valueOf(String s);
Zum Beispiel:
Du bist fertig!!!
quelle
Für diejenigen, die zu Kotlin gewechselt sind, verwenden Sie einfach
string.toLong()
That
Long.parseLong(string)
unter der Haubequelle
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
quelle