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?

Belgi
la source
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
Mike Christensen
la source
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

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

   }
}
Genjuro
la source
11

Long.valueOf (String s) - il est évident que des précautions doivent être prises pour se protéger contre les non-nombres si cela est possible dans votre code.

Markdsievers
la source
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.

Nicolas Filotto
la source
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.");
   }
Hoque MD Zahidul
la source
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é!!!

Prajwal Shinde
la source
0

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

Leo Droidcoder
la source
-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);
Chetan Nellekeri
la source