java - convertir - string to long kotlin
¿Cómo convertir String a long en Java? (8)
Tengo una pregunta simple en Java: ¿Cómo puedo convertir una String
que fue obtenida por Long.toString()
a long
?
El mejor enfoque es Long.valueOf(str)
ya que se basa en Long.valueOf(str) que utiliza un caché interno, lo que lo hace más eficiente, ya que reutilizará si es necesario las instancias almacenadas en caché de Long
van desde -128
hasta 127
incluidas.
Devuelve una instancia
Long
representa el valor largo especificado. Si no se requiere una nueva instancia Larga, este método generalmente se debe usar en preferencia al constructorLong(long)
, ya que es probable que este método produzca un rendimiento de tiempo y espacio significativamente mejor al almacenar en caché los valores solicitados con frecuencia. Tenga en cuenta que, a diferencia del método correspondiente en la clase Integer, este método no es necesario para almacenar en caché los valores dentro de un rango particular.
Gracias al auto-unboxing permite convertir una instancia de clase envoltura en su tipo primitivo correspondiente, el código sería:
long val = Long.valueOf(str);
Tenga en cuenta que el código anterior todavía puede lanzar una NumberFormatException
si la String
proporcionada no coincide con un long
firmado.
En términos generales, es una buena práctica usar el método de fábrica static
valueOf(str)
de una clase de envoltura como Integer
, Boolean
, Long
, ... ya que la mayoría reutiliza instancias siempre que sea posible, lo que las hace potencialmente más eficientes en términos de huella de memoria que los métodos de parse
o constructores correspondientes.
Extracto del Item 1
de Effective Java escrito por Joshua Bloch :
A menudo puede evitar la creación de objetos innecesarios utilizando métodos de fábrica estáticos (Elemento 1) en lugar de constructores en clases inmutables que proporcionan ambos. Por ejemplo, el método de fábrica estático
Boolean.valueOf(String)
es casi siempre preferible al constructorBoolean(String)
. El constructor crea un nuevo objeto cada vez que se le llama, mientras que el método de fábrica estática nunca es obligatorio y no lo hará en la práctica.
En caso de que esté utilizando el Mapa sin genérico, deberá convertir el valor en Cadena y luego intentar convertirlo a Largo. A continuación se muestra el código de ejemplo
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);
Para aquellos que cambiaron a Kotlin solo usen
string.toLong()
Eso llamará Long.parseLong(string)
bajo el capó
Para convertir un String en un Long (objeto), use Long.valueOf(String s).longValue();
Ver link
Use 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
Long.valueOf (String s) : obviamente, se debe tener el debido cuidado de proteger contra los no números si eso es posible en su código.
Hay alguna forma de convertir una cadena a un entero :
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();
Podemos acortar a:
String numberAsString = "1234";
long number = new Long(numberAsString).longValue();
O solo
long number = new Long("1234").longValue();
4) Usando el 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.");
}
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());
}
}
}