wake-up-neo.com

Wie konvertiere ich String nach Long in Java?

Ich habe eine einfache Frage in Java: Wie kann ich ein String, das mit Long.toString() erhalten wurde, in long konvertieren?

381
Belgi

Verwenden Sie 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
636

Um einen String in einen Long (Objekt) zu konvertieren, verwenden Sie Long.valueOf(String s).longValue();

Siehe link

138
coreyspitzer
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());
      }

   }
}
27
Genjuro

Long.valueOf (String s) - Offensichtlich muss sorgfältig gegen Nicht-Zahlen geschützt werden, wenn dies in Ihrem Code möglich ist.

11
markdsievers

Der beste Ansatz ist Long.valueOf(str) , da er sich auf Long.valueOf(long) stützt, der einen internen Cache verwendet, wodurch er effizienter wird, da die zwischengespeicherten Instanzen von Long bei Bedarf wiederverwendet werden -128 bis 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 Long(long) vorgezogen werden, da diese Methode durch Zwischenspeichern häufig angeforderter Werte wahrscheinlich zu einer erheblich besseren Leistung in Bezug auf Platz und Zeit führt. 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 Auto-Unboxing , das es ermöglicht, die Instanz einer Wrapper-Klasse in den entsprechenden primitiven Typ zu konvertieren, wäre der Code dann:

long val = Long.valueOf(str);

Bitte beachten Sie, dass der vorherige Code immer noch ein NumberFormatException auslösen kann, wenn das bereitgestellte String nicht mit einem signierten long übereinstimmt.

Generell ist es empfehlenswert, die static Factory-Methode valueOf(str) einer Wrapper-Klasse wie Integer, Boolean, Long, ... zu verwenden, da die meisten von ihnen wiederverwendet werden Fälle, in denen es möglich ist, sie hinsichtlich des Speicherbedarfs potenziell effizienter zu machen als die entsprechenden parse Methoden oder Konstruktoren.


Auszug aus Effektives Java Item 1 geschrieben von Joshua Bloch :

Sie können häufig vermeiden, unnötige Objekte zu erstellen, indem Sie statische Factory-Methoden (Element 1) verwenden, anstatt Konstruktoren für unveränderliche Klassen, die beides bereitstellen. Beispielsweise ist die statische Factory-Methode Boolean.valueOf(String) dem Konstruktor Boolean(String) fast immer vorzuziehen. Der Konstruktor erstellt jedes Mal, wenn er aufgerufen wird, ein neues Objekt, während die statische Factory-Methode dies niemals erfordert und in der Praxis nicht erforderlich ist.

4
Nicolas Filotto

Für diejenigen, die zu Kotlin gewechselt haben, nutzen Sie einfach
string.toLong()
Das wird Long.parseLong(string) unter der Haube aufrufen

0
Leo Droidcoder

Es gibt eine Möglichkeit, einen String in eine Ganzzahl 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 einfach

long number = new Long("1234").longValue();

4) Verwendung 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.");
   }
0