In Java esistono otto tipi di dati primitivi, ognuno ca­rat­te­riz­za­to da una di­men­sio­ne fissa e un in­ter­val­lo di valori pre­de­fi­ni­to. Questi tipi sono uti­liz­za­ti per creare variabili e assegnare loro numeri, caratteri o valori logici in­di­vi­dua­li. I primitivi di Java sono boolean, byte, char, double, float, int, long e short.

Cosa sono i tipi primitivi di Java?

Come in altri linguaggi di pro­gram­ma­zio­ne anche in Java esistono diversi tipi di dati, suddivisi in due categorie. Da un lato ci sono i “ri­fe­ri­men­ti”, che puntano a un oggetto li­be­ra­men­te de­fi­ni­bi­le, come ad esempio stringhe, array, classi o in­ter­fac­ce. Dall’altro abbiamo i “primitivi”, ca­rat­te­riz­za­ti da una di­men­sio­ne fissa, identica su tutte le piat­ta­for­me. Ognuno di essi dispone di una classe wrapper dedicata, è integrato in modo in­va­ria­bi­le e presenta un in­ter­val­lo di valori pre­de­fi­ni­to. I tipi primitivi di Java si usano per creare variabili con­te­nen­ti singoli numeri, caratteri o valori logici.

Questi otto tipi di dati primitivi sono un elemento fon­da­men­ta­le della pro­gram­ma­zio­ne Java, tanto che la loro rap­pre­sen­ta­zio­ne è parte in­te­gran­te del lin­guag­gio. Sebbene dif­fe­ri­sca­no tra loro prin­ci­pal­men­te per i tipi di valori che possono me­mo­riz­za­re, pre­sen­ta­no tutti la stessa ca­rat­te­ri­sti­ca di base, ovvero con­ten­go­no un solo valore. I tipi primitivi di Java si sud­di­vi­do­no in quattro gruppi, a seconda del loro ambito di ap­pli­ca­zio­ne:

  • Dati booleani (boolean)
  • Numeri interi (byte, short, int e long)
  • Valori in virgola mobile (float e double)
  • Caratteri (char)

Dato che i primitivi sono me­mo­riz­za­ti di­ret­ta­men­te nello stack, ovvero la porzione dinamica di memoria, è im­por­tan­te sapere quanto spazio occupano (su questo punto torneremo in seguito). Siccome Java è un lin­guag­gio for­te­men­te tipizzato, prima di avviare la com­pi­la­zio­ne è ne­ces­sa­rio di­chia­ra­re il tipo di una variabile. Solo in questo modo il codice verrà eseguito cor­ret­ta­men­te.

Di seguito elen­chia­mo i primitivi di Java:

Tipo di dati Di­men­sio­ne In­ter­val­lo di valori Valore pre­de­fi­ni­ti Classe wrapper
boolean 1 bit true o false false java.lang.Boolean
byte 8 bit da -128 a 127 0 java.lang.Byte
short 16 bit da -32768 a 32767 0 java.lang.Short
int 32 bit da -2147483648 a 2147483647 0 java.lang.Integer
long 64 bit da -9223372036854775808 a 9223372036854775807 0 java.lang.Long
float 32 bit fino a dieci cifre decimali 0,0 java.lang.Float
double 64 bit fino a 16 cifre decimali 0,0 java.lang.Double
char 16 bit **’\u0000’ (quindi 0) fino a ‘\uffff’ (è uguale a 65535) ‘\u0000’ java.lang.Character
Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana

boolean

Il boolean in Java viene anche chiamato valore di verità. È il tipo primitivo più semplice del lin­guag­gio Java, poiché ammette solo due valori: “vero” o “falso”. Viene uti­liz­za­to qualora sia ne­ces­sa­rio esprimere una con­di­zio­ne logica e, pertanto, ap­par­tie­ne al gruppo dei tipi di dati logici. Nelle espres­sio­ni, i valori di un boolean sod­di­sfa­no sempre una con­di­zio­ne, che può essere vera (true) o falsa (false). Qualora non si assegni alcun valore al boolean, questo risulta au­to­ma­ti­ca­men­te falso. Il boolean può essere usato con operatori Java quali AND e OR. L’as­se­gna­zio­ne funziona secondo questo principio:

public class Main {
	public static void main(String[] args) {
		boolean x = true;
		System.out.println(x);
	}
}
java

L’output generato dal comando Java System.out.prinln sarà:

true
java

byte

Il byte è il tipo di dato intero più piccolo della sua categoria. Il suo range di valori è estre­ma­men­te limitato e va da -128 a 127. Il vantaggio, tuttavia, è che occupa solo 8 bit di memoria. Il suo nome deriva proprio da questo: per fare un byte ci vogliono 8 bit. Partendo da range di valore molto limitati, è possibile di­chia­ra­re il byte nel seguente modo:

public class Main {
	public static void main(String[] args) {
		byte x = 101;
		System.out.println(x);
	}
}
java

L’output è il seguente:

101
java

short

short occupa il doppio di spazio di byte e ap­par­tie­ne ai tipi primitivi meno usati. Se però byte è troppo piccolo e int troppo grande, questo tipo di dato intero può rap­pre­sen­ta­re la scelta adatta. Viene spe­ci­fi­ca­to come segue:

public class Main {
	public static void main(String[] args) {
		short x = -27412;
		System.out.println(x);
	}
}
java

Il relativo output sarà:

-27412
java

int

int è il tipo di dato intero mag­gior­men­te usato. Presenta un vasto range di valori e occupa re­la­ti­va­men­te poca memoria. In molti casi, la sua rap­pre­sen­ta­zio­ne in com­ple­men­to a due si usa anche per ap­pli­ca­zio­ni ag­giun­ti­ve. Il codice è il seguente:

public class Main {
	public static void main(String[] args) {
		int x = 14;
		int y = 3;
		int z = x + y;
		System.out.println(x + " + " + y + " = " + z);
	}
}
java

Il relativo output sarà:

14 + 3 = 17
java

long

long è un’esten­sio­ne di int ed è in grado di contenere range di valori ancora più ampi. Spesso basta usare int; tuttavia, se si desidera di­chia­ra­re una variabile di tipo long, sarà ne­ces­sa­rio procedere nel seguente modo:

public class Main {
	public static void main(String[] args) {
		long x = 47;
		System.out.println(x);
	}
}
java

L’output sarà:

47
java

float

Se desideri rap­pre­sen­ta­re frazioni di numeri reali, puoi usare due tipi di primitivi, detti anche primitivi in virgola mobile. float è il più piccolo dei due e occupa 32 bit. Può riportare fino a 7 cifre decimali. Tuttavia, non è par­ti­co­lar­men­te preciso e pertanto si usa solo di rado. Qualora tu abbia bisogno di usarlo comunque, viene spe­ci­fi­ca­to in questo modo:

public class Main {
	public static void main(String[] args) {
		float x = 7.22f;
		System.out.println(x);
	}
}
java

Dopo il numero compare una “f” minuscola o maiuscola, per indicare al com­pi­la­to­re che si tratta di float e non di double. Nell’output la lettera non viene vi­sua­liz­za­ta:

7.22
java

double

Il secondo tipo di dato in virgola mobile è double. Sebbene sia si­gni­fi­ca­ti­va­men­te più preciso di float non ga­ran­ti­sce risultati del tutto esatti. In al­ter­na­ti­va, si può con­si­de­ra­re l’utilizzo della classe Big­De­ci­mal. Tuttavia, se desideri comunque usare double, puoi scrivere il codice come segue:

public class Main {
	public static void main(String[] args) {
		double x = 7.2252;
		System.out.println(x);
	}
}
java

In questo modo puoi ri­nun­cia­re alla cifra in più. L’output sarà:

7,2252
java

char

char viene usato per rap­pre­sen­ta­re un carattere di Unicode. Il valore va da ‘\u0000’ a ‘\uffff’, ovvero da 0 a 65535. Il tipo di dati character può quindi rap­pre­sen­ta­re quasi tutti i caratteri europei e asiatici. Ciascuno richiede 16 bit di memoria. In Java i valori di questo primitivo sono racchiusi tra vir­go­let­te. Il codice viene scritto in questo modo:

public class Main {
	public static void main(String[] args) {
		char x = '&';
		System.out.println(x);
	}
}
java

L’output ottenuto è il seguente:

&
java
Vai al menu prin­ci­pa­le