Long.valueOf (String s) donne un Long (objet) et Long.valueOf (String s) .longValue () donne le long (primitif).
Champ
27
publicclassStringToLong{publicstaticvoid main (String[] args){// String s = "fred"; // do this if you want an exceptionString s ="100";try{long l =Long.parseLong(s);System.out.println("long l = "+ l);}catch(NumberFormatException nfe){System.out.println("NumberFormatException: "+ nfe.getMessage());}}}
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.
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 efficaceItem 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.
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 =newLong(numberAsString);long number = longObject.longValue();
Nous pouvons raccourcir pour:
String numberAsString ="1234";long number =newLong(numberAsString).longValue();
Ou juste
long number =newLong("1234").longValue();
4) En utilisant le format Decemal:
String numberAsString ="1234";DecimalFormat decimalFormat =newDecimalFormat("#");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.");}
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 =newHashMap();
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);
Réponses:
Utilisation
Long.parseLong()
la source
Pour convertir une chaîne en un objet long (objet), utilisez
Long.valueOf(String s).longValue();
Voir lien
la source
java.lang.Long
la source
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.
la source
La meilleure approche consiste
Long.valueOf(str)
à s'appuyer sur celuiLong.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 pourLong
passer de-128
à127
incluses.Grâce à l' auto-unboxing permettant de convertir l'instance d'une classe wrapper en son type primitif correspondant, le code serait alors:
Veuillez noter que le code précédent peut toujours lancer un
NumberFormatException
si le fourniString
ne correspond pas à un signélong
.D'une manière générale, il est une bonne pratique d'utiliser la
static
méthode de fabricationvalueOf(str)
d'une classe wrapper commeInteger
,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 correspondantsparse
méthodes ou constructeurs .Extrait de Java efficace
Item 1
écrit par Joshua Bloch :la source
Long number = Long.valueOf("123")
,Long number = Long.parseLong("123")
etLong 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"))
Il existe un moyen de convertir une chaîne en entier :
1)
2)
3)
Nous pouvons raccourcir pour:
Ou juste
4) En utilisant le format Decemal:
la source
C'est assez simple, utilisez
Long.valueOf(String s);
Par exemple:
Vous avez terminé!!!
la source
Pour ceux qui sont passés à Kotlin, utilisez simplement
string.toLong()
That will call
Long.parseLong(string)
under the hoodla source
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
la source