Wie konvertiere ich String in Java in Long?

400

Ich habe eine einfache Frage in Java: Wie kann ich eine umwandeln , Stringdie von erhalten Long.toString()zu long?

Belgi
quelle
1
5 Möglichkeiten mit Beispielen für die Konvertierung von Zeichenfolgen in Long in Java
Somnath Muluk
1
Intern rufen alle Versionen die Methode Long.parseLong (String) auf . Verwenden Sie es direkt. Speichern Sie einige CPU-Zyklen.
Lokesh
Bitte beziehen Sie sich auf diese: developer.android.com/reference/java/lang/…
Mihir Trivedi

Antworten:

664

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
Mike Christensen
quelle
2
was ist mit "Mittag- / Abendessen"?
Narendra Sorathiya
schöner Code. seine Arbeit
sirmagid
140

Verwenden Sie zum Konvertieren eines Strings in ein Long (Objekt)Long.valueOf(String s).longValue();

Siehe Link

Coreyspitzer
quelle
1
Das fragt OP nicht.
Christian Mann
7
@ Belgi. Nein, es kehrt zurückjava.lang.Long
Alexander Pogrebnyak
@Belgi - Long.valueOf gibt einen Long zurück, keinen String.
Don Roby
4
@ MikeDaniels, weil dies eine sehr indirekte Methode ist. Siehe docs.oracle.com/javase/7/docs/api/java/lang/… . Es wird ein Long- Objekt zurückgegeben, nicht das primitive Long.
Pacerier
Long.valueOf (String s) gibt ein Long (Objekt) und Long.valueOf (String s) .longValue () gibt das Long (Primitiv) an.
Champ
27
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());
      }

   }
}
Genjuro
quelle
11

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.

Markdsievers
quelle
5

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 .


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 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.

Nicolas Filotto
quelle
1
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 = 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.");
   }
Hoque MD Zahidul
quelle
1

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!!!

Prajwal Shinde
quelle
0

Für diejenigen, die zu Kotlin gewechselt sind, verwenden Sie einfach
string.toLong()
That Long.parseLong(string)unter der Haube

Leo Droidcoder
quelle
-1

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);
Chetan Nellekeri
quelle