Come convertire String in long in Java?


401

Ho una semplice domanda in Java: Come posso convertire una Stringche è stata ottenuta Long.toString()a long?


1
5 modi con esempi su come convertire string in long in Java
Somnath Muluk

1
Internamente tutte le versioni chiamano il metodo Long.parseLong (String) . Usalo direttamente. Salva alcuni cicli della CPU.
lokesh,

Si prega di fare riferimento a questo: developer.android.com/reference/java/lang/…
Mihir Trivedi

Risposte:


666

Uso 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

2
che dire di "pranzo / cena"?
Narendra Sorathiya,

bel codice. il suo lavoro
sirmagid

140

Per convertire una stringa in un lungo (oggetto), utilizzareLong.valueOf(String s).longValue();

Vedi link


1
Questo non è ciò che l'OP chiede.
Christian Mann,

7
@Belgi. No, ritornajava.lang.Long
Alexander Pogrebnyak il

@Belgi - Long.valueOf restituisce un Long, non una stringa.
Don Roby,

4
@MikeDaniels, Perché questo è un modo molto indiretto di farlo. Vedi docs.oracle.com/javase/7/docs/api/java/lang/… , restituisce un oggetto Long non il long primitivo.
Pacerier,

Long.valueOf (String s) dà un Long (oggetto) e Long.valueOf (String s) .longValue () dà il long (primitivo).
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());
      }

   }
}


5

L'approccio migliore è Long.valueOf(str)quanto si basa su Long.valueOf(long)che utilizza una cache interna rendendolo più efficiente, in quanto riutilizzerà se necessario, le istanze memorizzate nella cache di Longandare da -128a 127inclusi.

Restituisce Longun'istanza che rappresenta il valore lungo specificato. Se non è richiesta una nuova istanza Long, questo metodo dovrebbe generalmente essere usato in preferenza rispetto al costruttore Long(long), poiché è probabile che questo metodo produca prestazioni significativamente migliori in termini di spazio e tempo memorizzando nella cache i valori richiesti frequentemente. Si noti che, diversamente dal metodo corrispondente nella classe Integer, questo metodo non è richiesto per memorizzare nella cache valori all'interno di un intervallo particolare.

Grazie all'auto -unboxing che consente di convertire l'istanza di una classe wrapper nel tipo primitivo corrispondente, il codice sarebbe quindi:

long val = Long.valueOf(str);

Si noti che il codice precedente può comunque generare un NumberFormatExceptionse il fornito Stringnon corrisponde a un segno long.

In generale, si tratta di una buona pratica di utilizzare il staticmetodo factory valueOf(str)di una classe wrapper come Integer, Boolean, Long, ... dal momento che la maggior parte di riutilizzarli casi ogni volta che è possibile, che li rende potenzialmente più efficiente in termini di occupazione di memoria rispetto ai corrispondenti parsemetodi o costruttori .


Estratto da Effective Java Item 1 scritto da Joshua Bloch :

Spesso è possibile evitare la creazione di oggetti non necessari utilizzando metodi factory statici (elemento 1) in preferenza ai costruttori su classi immutabili che forniscono entrambi. Ad esempio, il metodo statico di fabbrica Boolean.valueOf(String)è quasi sempre preferibile al costruttore Boolean(String). Il costruttore crea un nuovo oggetto ogni volta che viene chiamato, mentre il metodo factory statico non è mai richiesto per farlo e in pratica non lo farà.


1
Vale la pena notare che l'auto-unboxing viene "desugared" dal compilatore in, nel caso di long -> Long, Long.valueOf (primitiveLong). Quindi Long number = Long.valueOf("123"), Long number = Long.parseLong("123")e Long number = Long.valueOf(Long.parseString("123")tutti finiscono per fare praticamente la stessa cosa. Quello che non vuole essere attenti a non sta chiamando i costruttori delle classi primitive in scatola - che può essere uno spreco. Quindi non scrivereLong number = new Long(parseLong("123"))
Ian Robertson il

4

Esistono alcuni modi per convertire la stringa in intero :

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();

Possiamo abbreviare a:

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

O solo

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

4) Utilizzando il formato Decemal:

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

1

È abbastanza semplice, usa Long.valueOf(String s);

Per esempio:

String s;
long l;

Scanner sc=new Scanner(System.in);
s=sc.next();
l=Long.valueOf(s);
System.out.print(l);

Hai finito!!!


0

Per coloro che sono passati a Kotlin basta usare
string.toLong()
Quello chiamerà Long.parseLong(string)sotto il cofano


-1

Nel caso in cui si stia utilizzando la Mappa senza un generico, è necessario convertire il valore in String e quindi provare a convertire in Long. Di seguito è riportato un codice di esempio

    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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.