Comment convertir String en long en Java?


401

J'ai une question simple en Java: comment convertir un fichier Stringobtenu par Long.toString()en long?


1
5 façons avec des exemples pour convertir une chaîne en long en Java
Somnath Muluk

1
En interne, toutes les versions appellent la méthode Long.parseLong (String) . Utilisez-le directement. Économisez quelques cycles CPU.
lokesh

Veuillez vous référer à celui-ci: developer.android.com/reference/java/lang/…
Mihir Trivedi

Réponses:


666

Utilisation 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
qu'en est-il du "déjeuner / dîner"?
Narendra Sorathiya

joli code. son travail
sirmagid

140

Pour convertir une chaîne en un objet long (objet), utilisezLong.valueOf(String s).longValue();

Voir lien


1
Ce n'est pas ce que demande OP.
Christian Mann

7
@Belgi. Non, il revientjava.lang.Long
Alexander Pogrebnyak

@Belgi - Long.valueOf renvoie un Long, pas une chaîne.
Don Roby

4
@MikeDaniels, Parce que c'est une façon très indirecte de le faire. Voir docs.oracle.com/javase/7/docs/api/java/lang/… , il renvoie un objet Long et non le long primitif.
Pacerier

Long.valueOf (String s) donne un Long (objet) et Long.valueOf (String s) .longValue () donne le long (primitif).
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

La meilleure approche consiste Long.valueOf(str)à s'appuyer sur celui Long.valueOf(long)qui utilise un cache interne, ce qui le rend plus efficace car il réutilisera si nécessaire les instances mises en cache pour Longpasser de -128à 127incluses.

Renvoie une Longinstance représentant la valeur longue spécifiée. Si une nouvelle instance Long n'est pas requise, cette méthode doit généralement être utilisée de préférence au constructeur Long(long), car cette méthode est susceptible de produire des performances d'espace et de temps nettement meilleures en mettant en cache les valeurs fréquemment demandées. Notez que contrairement à la méthode correspondante dans la classe Integer, cette méthode n'est pas requise pour mettre en cache des valeurs dans une plage particulière.

Grâce à l' auto-unboxing permettant de convertir l'instance d'une classe wrapper en son type primitif correspondant, le code serait alors:

long val = Long.valueOf(str);

Veuillez noter que le code précédent peut toujours lancer un NumberFormatExceptionsi le fourni Stringne correspond pas à un signé long.

D'une manière générale, il est une bonne pratique d'utiliser la staticméthode de fabrication valueOf(str)d'une classe wrapper comme Integer, Boolean, Long, ... puisque la plupart d'entre eux réutilisent cas chaque fois qu'il est possible ce qui les rend à terme potentiellement plus efficace de l' empreinte mémoire que les correspondants parseméthodes ou constructeurs .


Extrait de Java efficace Item 1 écrit par Joshua Bloch :

Vous pouvez souvent éviter de créer des objets inutiles en utilisant des méthodes d'usine statiques (élément 1) de préférence aux constructeurs sur des classes immuables qui fournissent les deux. Par exemple, la méthode d'usine statique Boolean.valueOf(String)est presque toujours préférable au constructeur Boolean(String). Le constructeur crée un nouvel objet chaque fois qu'il est appelé, alors que la méthode d'usine statique n'est jamais requise pour le faire et ne le sera pas en pratique.


1
Il vaut la peine de noter que l'auto-unboxing est "désucré" par le compilateur dans, dans le cas de long -> Long, Long.valueOf (primitiveLong). Donc Long number = Long.valueOf("123"), Long number = Long.parseLong("123")et Long number = Long.valueOf(Long.parseString("123")tous finissent par faire à peu près la même chose. Ce que vous ne voulez faire attention à n'appelle les constructeurs des classes primitives boxed - qui peut être un gaspillage. Alors n'écrivez pasLong number = new Long(parseLong("123"))
Ian Robertson

4

Il existe un moyen de convertir une chaîne en entier :

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

Nous pouvons raccourcir pour:

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

Ou juste

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

4) En utilisant le format 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

C'est assez simple, utilisez Long.valueOf(String s);

Par exemple:

String s;
long l;

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

Vous avez terminé!!!


0

Pour ceux qui sont passés à Kotlin, utilisez simplement
string.toLong()
That will call Long.parseLong(string)under the hood


-1

Dans le cas où vous utilisez la carte sans générique, vous devez convertir la valeur en chaîne, puis essayer de convertir en long. Voici un exemple de code

    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);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.