¿Cómo convertir un valor Long
en un valor de Integer
en Java?Conversión de largo en entero
Respuesta
Integer i = theLong != null ? theLong.intValue() : null;
o si usted no tiene que preocuparse por nulo:
// auto-unboxing does not go from Long to int directly, so
Integer i = (int) (long) theLong;
Y en ambas situaciones, usted podría encontrarse con desbordamientos (debido a una larga puede almacenar un rango más amplio que un entero).
Es la mejor respuesta porque maneja valores NULOS. –
@ViacheslavDobromyslov la pregunta era sobre valores largos, no sobre valores nulos.Y personalmente creo en rechazar nulo por adelantado en lugar de usar null in -> null out y de ese modo transportar null a través de mi aplicación. Por lo tanto, también podría argumentarse que esta es la peor respuesta :-) –
¿Por qué se lanzaría dos veces cuando se puede llamar 'intValue' en su lugar? Además, va a unbox a long, cast to int y rebox a 'Integer', que no parece muy útil. No veo el punto en mi cabeza, ¿tienes una buena razón para esto? – Dici
Tendrás que escribir cast it.
long i = 100L;
int k = (int) i;
Tenga en cuenta que un largo tiene un rango mayor que un int, por lo que puede perder datos.
Si habla de los tipos encuadrados, lea el documentation.
Integer intValue = myLong.intValue();
Parece mucho más limpio que (int) (largo) imo. –
No funciona con el valor NULO –
@ViacheslavDobromyslov sí, tienes razón. Es obvio – birdy
Aquí hay tres maneras de hacerlo:
Long l = 123L;
Integer correctButComplicated = Integer.valueOf(l.intValue());
Integer withBoxing = l.intValue();
Integer terrible = (int) (long) l;
Las tres versiones generan código de bytes casi idéntica:
0 ldc2_w <Long 123> [17]
3 invokestatic java.lang.Long.valueOf(long) : java.lang.Long [19]
6 astore_1 [l]
// first
7 aload_1 [l]
8 invokevirtual java.lang.Long.intValue() : int [25]
11 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
14 astore_2 [correctButComplicated]
// second
15 aload_1 [l]
16 invokevirtual java.lang.Long.intValue() : int [25]
19 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
22 astore_3 [withBoxing]
// third
23 aload_1 [l]
// here's the difference:
24 invokevirtual java.lang.Long.longValue() : long [34]
27 l2i
28 invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
31 astore 4 [terrible]
Problema menor de stylistic: Probablemente deberías usar el sufijo en mayúscula "123L" para facilitar la lectura. – Joey
O puede usar una buena fuente ... y aquí vamos de nuevo ...: D (solo j/k, también lo hago) – davidcesarino
No funciona con el valor NULO –
en Java, hay una manera rigurosa para convertir un largo a int
no solo lnog puede convertir a int, cualquier tipo de clase se extiende Número puede convertir a otro Numbe r escriba en general, aquí le mostraré cómo convertir un largo a int, otro tipo viceversa.
Long l = 1234567L;
int i = org.springframework.util.NumberUtils.convertNumberToTargetClass(l, Integer.class);
Si usted se preocupa de comprobar si hay desbordamientos y tienen Guava práctico, no es Ints.checkedCast()
:
int theInt = Ints.checkedCast(theLong);
The implementation está muerto simple, y tiros IllegalArgumentException en caso de desbordamiento:
public static int checkedCast(long value) {
int result = (int) value;
checkArgument(result == value, "Out of range: %s", value);
return result;
}
La mejor La manera simple de hacerlo es:
public static int safeLongToInt(long longNumber)
{
if (longNumber < Integer.MIN_VALUE || longNumber > Integer.MAX_VALUE)
{
throw new IllegalArgumentException(longNumber + " cannot be cast to int without changing its value.");
}
return (int) longNumber;
}
Suponiendo que no es nulo Longval
Integer intVal = ((Number)longVal).intValue();
Funciona por ejemplo, y se obtiene un objeto que puede ser un número entero o una larga. Sé que es feo, pero sucede ...
Si está utilizando Java 8 Hágalo de la siguiente manera
import static java.lang.Math.toIntExact;
public class DateFormatSampleCode {
public static void main(String[] args) {
long longValue = 1223321L;
int longTointValue = toIntExact(longValue);
System.out.println(longTointValue);
}
}
largos visitantes = 1000;
int convVisitors = (int) visitantes;
- 1. Entero Conversión en C#
- 2. Conversión del puntero entero en entero
- 3. Conversión de entero en cadena
- 4. Error de conversión de tipo largo al leer el campo entero desde MongoDB en Java
- 5. conversión doble de número entero en java
- 6. conversión de cadena a largo en pitón
- 7. Conversión de largo a doble en Java
- 8. conversión de entero de 32 bits sin signo (big endian) a largo y volver
- 9. Conversión de cadena a entero
- 10. Conversión de Entero, a BigInteger
- 11. Conversión de fecha a entero en Java
- 12. BitSet hacia y desde entero/largo
- 13. la conversión de una cadena que contiene decimal a largo
- 14. Función de conversión de entero a real
- 15. conversión de int y largo en cadena en Ir
- 16. Ruby - Conversión de entero a cadena
- 17. Java flotante de conversión a entero
- 18. Conversión de un entero en una cadena hexadecimal en Ruby
- 19. la conversión a número entero Int
- 20. Asignación hace puntero desde entero sin conversión
- 21. la conversión de un entero a Enum en PostgreSQL
- 22. entero a la conversión booleana método de conteo() en
- 23. Conversión de cadena formateada a entero en Javascript
- 24. Entero a la conversión de cadenas en R
- 25. la conversión de un entero a binario en C
- 26. entero para la conversión de cadenas en D
- 27. Python hash() no puede manejar un entero largo?
- 28. Conversión de entero de 32 bits a 4 caracteres
- 29. Conversión de caracteres sin signo a entero con signo
- 30. Conversión/cuantificación del rango de flotación al rango entero
primero debe comprobar si Long no excede Integer MaxValue. – Lukasz
Java 8: http://stackoverflow.com/a/36331461/2291056 – Kuchi