Programmazione Java: Lezione 5 - Tipi di dato primitivi (Parte II)

Se avete seguito la prima parte, avete capito il concetto di variabile. Una variabile può essere vista come una scatola che è in grado di contenere informazioni. Come ogni scatola ha la sua capacità, possiamo prendere il contenuto della variabile, possiamo cambiare il suo contenuto (quando inseriamo un oggetto in una scatola già occupata, non ci entra, dobbiamo far uscire l'oggetto che c'era prima ed inserire il nuovo, la stessa cosa fa java con le variabili).
Ogni tipo di dato, come detto prima ha:

  1. Una denominazione (int, double, char)
  2. Un nome (totale, max, x, i)
  3. Un insieme di valori letterali possibili 3, 3.1, 'c'
  4. Un insieme di operazioni lecite (+, *, /, -)

In java esistono:

  1. Tipi primitivi (pre-definiti)
  2. Tipi di oggetti

Ma in questa lezione parleremo dei tipi primitivi.
Esistono 4 tipi di dati primitivi

Dati primitivi

  1. Numeri interi (byte, short, int, long)
  2. Numeri decimale in virgola mobile (float, double)
  3. Caratteri (char)
  4. Booleani Vero/Falso (boolean)


Tipi interi
I calcolatori hanno una particolare predisposizione per i numeri interi, che possono essere trattati con grande efficienza e precisione assoluta, l’unico problema che può insorgere nel trattare tali numeri è dato dall’estensione del tipo che si utilizza, che non è mai infinita.

  1. int - Una variabile di tipo int, per esempio, può contenere qualsiasi numero intero compreso tra 2.147.483.647 e -2.147.483.648, ossia tutti i numeri rappresentabili con una cella di memoria a 32 bit. Se il valore di una variabile supera la soglia più alta, in questo caso 2.147.483.647, essa ricomincia dal valore opposto, ossia da -2.147.483.648. È importante prestare grande attenzione a questo tipo di limitazioni quando si lavora su un calcolatore. Il formato int è senza dubbio il tipo primitivo più usato, per ragioni di praticità e di efficienza: i 32 bit forniscono un ottimo compromesso tra l’estensione dell’insieme numerico e le prestazioni su tutte le moderne piattaforme hardware. Esistono comunque altri tre tipi interi, che si distinguono da int per la dimensione massima dei numeri trattabili.
  2. byte - Il tipo byte permette di operare su numeri compresi tra -128 e 127, ossia i numeri che è possibile rappresentare con cifre da 8 bit (Sappiamo che un byte è formato da 8 bit, ecco il nome di byte). Malgrado la ridicola estensione dell’insieme sottostante, byte è un tipo di dato estremamente importante, dal momento che è il formato di base nello scambio di dati con le periferiche di input/output, come i dischi o la rete. Ma anche è utile quando bisogna trattare numeri piccoli, per esempio se dobbiamo gestire l'ora i secondi, minuti e ore variano tra la 0 e il 60 a parte le ore che sono 24 ma comunque sempre meno di 128. Utilizzare un byte, anziché l'int per conservare questo tipo di dato in memoria si guadagna in quanto conseriviamo un byte anziché occuparne 4 superfluei dell'int.
  3. short - Il tipo short permette di trattare numeri a 16 bit, compresi tra -32768 e 32767: è in assoluto il formato meno usato in Java.
  4. long - Infine, esiste il formato long a 64 bit, che permette di trattare numeri compresi tra -9.223.327.036.854.775.808 e 9.223.327.036.854.775.807. Malgrado l’estensione da capogiro, esso viene utilizzato esclusivamente nelle circostanze in cui risulti veramente utile: nei calcolatori a 32 bit, il tipo long viene trattato con minor efficienza rispetto a int
  5. Il tipo long richiede, inoltre, una certa attenzione in fase di assegnamento: per assegnare valori superiori a quelli consentiti da una cifra a 32 bit, è necessario posporre al numero la lettera L:
long numero = 4.543.349.547L;

Tipi numerici floating point (virgola mobile)
Per elaborare numeri con decimali, Java mette a disposizione i tipi floating point (a virgola mobile). Il calcolo a virgola mobile funziona secondo il principio della notazione scientifica, dove un numero viene rappresentato mediante una parte intera, detta mantissa , moltiplicata
per un’opportuna potenza (positiva o negativa) di 10:
0,00000456 = 0,456 * 10-6
345 675 432 = 0,345675432 * 107
Questa modalità di rappresentazione offre il vantaggio di permettere la manipolazione di numeri molto più grandi o molto più piccoli di quanto sarebbe consentito dal numero di cifre disponibili, al prezzo di un arrotondamento per eccesso o per difetto.
I numeri in virgola mobile, malgrado la loro importanza nel calcolo scientifi co, non ven-
gono trattati diffusamente nei manuali di base. Le particolari modalità di arrotondamento
e di perdita di precisione, caratteristici di questo tipo numerico, richiedono conoscenze
matematiche non banali.
Il float, a 32 bit, può contenere numeri positivi e negativi compresi tra 1.40129846432481707* 10-45 e 3.4282346638528860* 1038, mentre il double a 64 bit può lavorare su numeri positivi e negativi tra 4.94065655841246544 * 10-324 e 1.79769313486231570 * 10138.

Booleano
Una variabile booleana può assumere solamente due valori:

  1. true
  2. false

Significano rispettivamente “vero" e “falso".

boolean isOnline = false;

Nota: A differenza di altri linguaggi come C o Php o altri ancora, in Java non si può usare: zero come equivalente a “false” e diverso da zero come equivalente a “true”.

Caratteri

Una variabile di tipo char può contenere un carattere in formato Unicode. La codifica Unicode comprende decine di migliaia di caratteri, e include gli alfabeti più diffusi nel mondo. I valori da 0 a 127 corrispondono, per motivi di retro compatibilità, al set di caratteri ASCII. Una variabile char è, a tutti gli effetti, un intero a 16 bit privo di segno: essa può assumere qualsiasi valore tra 0 e 65535. Nell’effettuare assegnamenti, tuttavia, si preferisce ricorrere alle costanti carattere, che si dichiarano racchiudendo un singolo carattere tra apici, come si vede nell’esempio seguente:

char carattere = 'A';
char carattere_due = 'z';

Aggiungi un commento