1. Información general
En este tutorial, discutiremos el número c lass de Java . Primero, aprenderemos qué hace la clase Number y qué métodos contiene . Luego, profundizaremos en las diversas implementaciones de esta clase abstracta .
2. Clase de número
Number es una clase bstract en el paquete java.lang . Varias subclases amplían la clase Number . Los más utilizados son:
- Byte
- Corto
- Entero
- Largo
- Doble
- Flotador
El propósito principal de esta clase es proporcionar métodos para convertir el valor numérico en cuestión a varios tipos primitivos como byte , short , int , long , double y float .
Hay cuatro métodos abstractos disponibles para ayudar a realizar la tarea:
- intValue ()
- longValue ()
- doubleValue ()
- floatValue ()
Number también tiene dos métodos concretos, byteValue () y shortValue () , que devolverán elvalordel byte y elvalor corto de un número especificado, respectivamente. Para obtener más información sobre las diferentes implementaciones de laclase Number , consulte nuestro artículo sobre Clases de envoltura.
En las próximas secciones, aprenderemos más sobre estos métodos y su uso.
3. Métodos concretos
Analicemos los métodos concretos uno por uno.
3.1. shortValue ()
Como sugiere el nombre, este método convierte el objeto Número especificado en un valor corto primitivo .
La implementación predeterminada convierte el valor int en corto y lo devuelve. Sin embargo, las subclases tienen sus propias implementaciones y convierten los valores respectivos en cortos y luego regresan.
Así es como un valor Double se convierte en un tipo primitivo corto :
@Test public void givenDoubleValue_whenShortValueUsed_thenShortValueReturned() { Double doubleValue = Double.valueOf(9999.999); assertEquals(9999, doubleValue.shortValue()); }
3.2. byteValue ()
Este método devuelve el valor del objeto Número especificado como un valor de byte . Sin embargo, las clases secundarias de la clase Number tienen sus propias implementaciones.
Así es como se puede convertir un valor flotante en un valor de byte :
@Test public void givenFloatValue_whenByteValueUsed_thenByteValueReturned() { Float floatValue = Float.valueOf(101.99F); assertEquals(101, floatValue.byteValue()); }
4. Métodos abstractos
Además, la clase Number también tiene algunos métodos abstractos y varias subclases que los implementan.
En esta sección, echemos un vistazo rápido a cómo se utilizan estos métodos.
4.1. intValue ()
Este método devuelve la representación int del Número en contexto.
Veamos cómo se puede cambiar un valor Long a int :
@Test public void givenLongValue_whenInitValueUsed_thenInitValueReturned() { Long longValue = Long.valueOf(1000L); assertEquals(1000, longValue.intValue()); }
Ciertamente, el compilador está realizando aquí una operación de restricción al convertir un valor largo en un int .
4.2. longValue ()
Este método devolverá el valor del N úmero especificado como long .
En este ejemplo, vemos cómo un valor entero se convierte en largo a través de la clase Integer :
@Test public void givenIntegerValue_whenLongValueUsed_thenLongValueReturned() { Integer integerValue = Integer.valueOf(100); assertEquals(100, integerValue.longValue()); }
A diferencia del método intValue () , longValue () devuelve el valor largo después de una conversión primitiva amplia.
4.3. floatValue ()
Podemos utilizar este método para devolver el valor de la especificada N úmero como un flotador. Echemos un vistazo a cómo un valor corto se puede convertir en un valor flotante :
@Test public void givenShortValue_whenFloatValueUsed_thenFloatValueReturned() { Short shortValue = Short.valueOf(127); assertEquals(127.0F, shortValue.floatValue(), 0); }
Asimismo, longValue () y floatValue () también realizan una conversión primitiva de ampliación.
4.4. doubleValue ()
Finalmente, este método convierte el valor de la clase numérica dada al tipo de datos de doble primitiva y lo devuelve.
A continuación, se muestra un ejemplo del uso de este método para convertir un Byte en doble :
@Test public void givenByteValue_whenDoubleValueUsed_thenDoubleValueReturned() { Byte byteValue = Byte.valueOf(120); assertEquals(120.0, byteValue.doubleValue(), 0); }
5. Conclusión
En este tutorial rápido, echamos un vistazo a algunos de los métodos más importantes de la clase Number .
Finalmente, hemos demostrado cómo se pueden usar estos métodos en varias clases de Wrapper .
Como siempre, el código fuente completo del artículo está disponible en GitHub.