Guida alla classe dei numeri in Java

1. Panoramica

In questo tutorial, discuteremo di Java's Number c lass. Per prima cosa, impareremo cosa fa la classe Number e quali metodi contiene . Quindi, ci immergeremo nelle varie implementazioni di questa classe astratta .

2. Numero di classe

Number è una classe a bstract nel pacchetto java.lang . Diverse sottoclassi estendono la classe Number . I più comunemente usati sono:

  • Byte
  • Corto
  • Numero intero
  • Lungo
  • Doppio
  • Galleggiante

Lo scopo principale di questa classe è fornire metodi per convertire il valore numerico in questione in vari tipi primitivi come byte , short , int , long , double e float .

Sono disponibili quattro metodi astratti per aiutare a svolgere l'attività:

  • intValue ()
  • longValue ()
  • doubleValue ()
  • floatValue ()

Number ha anche due metodi concreti, byteValue () e shortValue () , che restituiranno rispettivamente ilvalore in byte e ilvalore short di un numero specificato. Per ulteriori informazioni sulle diverse implementazioni dellaclasse Number , fare riferimento al nostro articolo sulle classi wrapper.

Nelle prossime sezioni, impareremo di più su questi metodi e sul loro utilizzo.

3. Metodi concreti

Discutiamo i metodi concreti uno per uno.

3.1. shortValue ()

Come suggerisce il nome, questo metodo converte l' oggetto Number specificato in un valore breve primitivo .

L'implementazione predefinita converte il valore int in short e lo restituisce. Tuttavia, le sottoclassi hanno le loro implementazioni e convertono i rispettivi valori in short e poi restituiscono.

Ecco come un valore Double viene convertito in un tipo primitivo breve :

@Test public void givenDoubleValue_whenShortValueUsed_thenShortValueReturned() { Double doubleValue = Double.valueOf(9999.999); assertEquals(9999, doubleValue.shortValue()); }

3.2. byteValue ()

Questo metodo restituisce il valore dell'oggetto Number specificato come valore di byte . Tuttavia, le classi figlie della classe Number hanno le proprie implementazioni.

Ecco come un valore Float può essere convertito in un valore byte :

@Test public void givenFloatValue_whenByteValueUsed_thenByteValueReturned() { Float floatValue = Float.valueOf(101.99F); assertEquals(101, floatValue.byteValue()); }

4. Metodi astratti

Inoltre, la classe Number ha anche alcuni metodi astratti e diverse sottoclassi che li implementano.

In questa sezione, diamo una rapida occhiata a come vengono utilizzati questi metodi.

4.1. intValue ()

Questo metodo restituisce la rappresentazione int del numero nel contesto.

Vediamo come un valore Long può essere modificato in int :

@Test public void givenLongValue_whenInitValueUsed_thenInitValueReturned() { Long longValue = Long.valueOf(1000L); assertEquals(1000, longValue.intValue()); }

Certamente, il compilatore sta eseguendo un'operazione di restringimento qui convertendo un valore lungo in un int .

4.2. longValue ()

Questo metodo restituirà il valore del N umber specificato come long .

In questo esempio, vediamo come un valore Integer viene convertito in un valore long tramite la classe Integer :

@Test public void givenIntegerValue_whenLongValueUsed_thenLongValueReturned() { Integer integerValue = Integer.valueOf(100); assertEquals(100, integerValue.longValue()); }

A differenza del metodo intValue () , longValue () restituisce il valore long dopo una conversione primitiva di ampliamento.

4.3. floatValue ()

Possiamo usare questo metodo per restituire il valore del N umber specificato come float. Diamo un'occhiata a come un valore Short può essere convertito in un valore float :

@Test public void givenShortValue_whenFloatValueUsed_thenFloatValueReturned() { Short shortValue = Short.valueOf(127); assertEquals(127.0F, shortValue.floatValue(), 0); }

Allo stesso modo, anche longValue () e floatValue () eseguono una conversione primitiva di ampliamento.

4.4. doubleValue ()

Infine, questo metodo converte il valore della classe Number specificata nel tipo di dati primitivo doppio e lo restituisce.

Ecco un esempio di utilizzo di questo metodo per convertire un byte in double :

@Test public void givenByteValue_whenDoubleValueUsed_thenDoubleValueReturned() { Byte byteValue = Byte.valueOf(120); assertEquals(120.0, byteValue.doubleValue(), 0); }

5. conclusione

In questo breve tutorial, abbiamo esaminato alcuni dei metodi più importanti nella classe Number .

Infine, abbiamo dimostrato come questi metodi possono essere utilizzati in varie classi wrapper .

Come sempre, il codice sorgente completo dell'articolo è disponibile su GitHub.