Tipizzazione Statica e Tipi Primitivi in Java

Concetti Chiave
  • Java è un linguaggio fortemente tipizzato, il che significa che ogni variabile e espressione ha un tipo definito in modo rigoroso.
  • I tipi primitivi in Java sono byte, short, int, long, char, float, double e boolean.
  • I tipi primitivi sono i mattoni fondamentali del linguaggio e non sono oggetti, ma piuttosto valori semplici che possono essere manipolati direttamente.

Java è un linguaggio fortemente tipizzato

È importante affermare fin dall'inizio che Java è un linguaggio fortemente tipizzato, in inglese Strongly Typed.

Parte della sicurezza e della robustezza di Java deriva da questo aspetto. Per comprendere il significato di ciò, si considerino i seguenti punti:

  • In primo luogo, ogni variabile ha un tipo, ogni espressione ha un tipo e ogni tipo è definito in modo rigoroso.
  • In secondo luogo, tutte le assegnazioni, sia esplicite sia tramite passaggio di parametri nelle chiamate di metodo, vengono verificate per la compatibilità dei tipi. Non esistono coercizioni o conversioni automatiche di tipi in conflitto, come accade in alcuni linguaggi. Il compilatore Java controlla tutte le espressioni e i parametri per assicurare che i tipi siano compatibili. Qualsiasi incompatibilità di tipo è considerata un errore che deve essere corretto prima che il compilatore possa terminare la compilazione della classe.

I tipi primitivi

Java definisce otto tipi primitivi di dato: byte, short, int, long, char, float, double e boolean.

I tipi primitivi sono comunemente chiamati anche tipi semplici e in questa guida verranno utilizzati entrambi i termini. Essi possono essere suddivisi in quattro gruppi:

  • Interi

    Questo gruppo include byte, short, int e long, che rappresentano numeri interi con segno.

  • Numeri in virgola mobile

    Questo gruppo include float e double, che rappresentano numeri con precisione frazionaria.

  • Caratteri

    Questo gruppo include char, che rappresenta simboli in un insieme di caratteri, come lettere e numeri.

  • Booleano

    Questo gruppo include boolean, un tipo speciale per rappresentare valori vero/falso.

È possibile utilizzare questi tipi così come sono, oppure per costruire array o tipi di classe personalizzati usandoli come componenti. I tipi primitivi sono i mattoni fondamentali del linguaggio Java e sono utilizzati per rappresentare i dati di base. Non sono oggetti, ma piuttosto valori semplici che possono essere manipolati direttamente.

Essi costituiscono la base per tutti gli altri tipi di dato che è possibile creare.

I tipi primitivi rappresentano singoli valori—non oggetti complessi. Sebbene Java sia per il resto completamente orientato agli oggetti, i tipi primitivi non lo sono.

Essi sono analoghi ai tipi semplici presenti nella maggior parte degli altri linguaggi non orientati agli oggetti. La ragione di ciò è l'efficienza: trasformare i tipi primitivi in oggetti avrebbe ridotto eccessivamente le prestazioni.

I tipi primitivi sono definiti in modo da avere un intervallo esplicito e un comportamento matematico specifico. Linguaggi quali C e C++ permettono che la dimensione di un intero vari in base alle caratteristiche dell'ambiente di esecuzione. Java, invece, si comporta diversamente. A causa del requisito di portabilità, tutti i tipi di dato hanno un intervallo rigidamente definito. Ad esempio, un int è sempre di 32 bit, indipendentemente dalla piattaforma. Ciò consente di scrivere programmi che possono essere eseguiti senza porting su qualunque architettura. Sebbene specificare con rigore la dimensione di un intero possa comportare una lieve perdita di prestazioni in alcuni ambienti, tale scelta è necessaria per garantire la portabilità.

A partire dalla prossima lezione, esamineremo i tipi primitivi in dettaglio, partendo dai tipi interi e in virgola mobile.