web-dev-qa-db-fra.com

Comment convertir String en Java?

J'ai une simple question en Java: comment convertir une String obtenue par Long.toString() en long?

381
Belgi

Utilisez 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
Mike Christensen

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

Voir lien

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) - Évidemment, vous devez prendre les précautions nécessaires pour vous protéger contre les non-chiffres si cela est possible dans votre code.

11
markdsievers

La meilleure approche est Long.valueOf(str) car elle repose sur Long.valueOf(long) qui utilise un cache interne le rendant plus efficace car il réutilisera si nécessaire les instances mises en cache de Long à partir de -128 à 127 inclus.

Renvoie une instance Long 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 produira probablement de meilleures performances spatio-temporelles 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 obligée de mettre en cache les valeurs d'une plage donnée.

Grâce à 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 NumberFormatException si le String fourni ne correspond pas à un long signé.

En règle générale, il est recommandé d’utiliser la méthode static de la fabrique valueOf(str) d’une classe d’emballage telle que Integer, Boolean, Long, ..., la plupart d’entre elles étant réutilisées. cas où cela est possible, ce qui les rend potentiellement plus efficaces en terme d’empreinte mémoire que les méthodes ou constructeurs parse correspondants.


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

Vous pouvez souvent éviter de créer des objets inutiles en utilisant les méthodes fabriques statiques (Item 1) plutôt que les constructeurs sur des classes immuables qui fournissent les deux. Par exemple, la méthode de fabrique statique Boolean.valueOf(String) est presque toujours préférable au constructeur Boolean(String). Le constructeur crée un nouvel objet à chaque appel, alors que la méthode de la fabrique statique n’est jamais nécessaire et n’est pas utilisée dans la pratique.

4
Nicolas Filotto

Pour ceux qui sont passés à Kotlin, utilisez simplement
string.toLong()
Cela appellera Long.parseLong(string) sous le capot

0
Leo Droidcoder

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

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 à:

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

ou juste

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

4) tilisation du 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.");
   }
0
Hoque MD Zahidul