Tipo Carattere in Java

Concetti Chiave
  • Il tipo di dato char in Java rappresenta i caratteri Unicode, utilizzando 16 bit per ogni carattere.
  • I caratteri possono essere rappresentati sia come valori numerici che come simboli, consentendo operazioni aritmetiche.
  • Il set di caratteri standard ASCII occupa i primi 127 valori dell'insieme di caratteri Unicode.
  • Le variabili char possono essere incrementate e utilizzate in operazioni aritmetiche, poiché sono considerate tipi interi.

Caratteri

In Java, il tipo di dato utilizzato per memorizzare i caratteri è char.

Un aspetto fondamentale da comprendere è che Java usa Unicode per rappresentare i caratteri. Unicode definisce un insieme di caratteri completamente internazionale che può rappresentare tutti i caratteri presenti in tutte le lingue umane.

Si tratta di un'unificazione di decine di set di caratteri, come latino, greco, arabo, cirillico, ebraico, katakana, hangŭl e molti altri. All'epoca della creazione di Java, Unicode richiedeva 16 bit.

Pertanto, in Java char è un tipo a 16 bit. L'intervallo di un char va da 0 a 65 535. Non esistono char negativi. Il set di caratteri standard noto come ASCII va ancora da 0 a 127, mentre il set di caratteri esteso a 8 bit, ISO-Latin-1, va da 0 a 255.

Poiché Java è progettato per consentire la scrittura di programmi destinati all'uso mondiale, è logico che utilizzi Unicode per rappresentare i caratteri. Naturalmente, l'uso di Unicode risulta leggermente inefficiente per lingue come inglese, tedesco, spagnolo o francese, i cui caratteri possono essere facilmente contenuti entro 8 bit. Tuttavia, questo è il prezzo da pagare per la portabilità globale.

Consiglio

Ulteriori risorse su Unicode

Ulteriori informazioni su Unicode sono disponibili all'indirizzo http://www.unicode.org.

Ecco un programma che dimostra l'uso delle variabili char:

// Dimostra il tipo di dato char.
class DemoCarattere {
    public static void main(String[] args) {
        char car1, car2;

        car1 = 88;      // codice per X
        car2 = 'Y';

        System.out.print("car1 e car2: ");
        System.out.println(car1 + " " + car2);
    }
}

Questo programma visualizza il seguente output:

car1 e car2: X Y

Si noti che a car1 viene assegnato il valore 88, che è il valore ASCII (e Unicode) corrispondente alla lettera X.

Come accennato, il set di caratteri ASCII occupa i primi 127 valori dell'insieme di caratteri Unicode. Per questo motivo, tutti i “vecchi trucchi” usati con i caratteri in altri linguaggi funzionano anche in Java.

Benché char sia progettato per contenere caratteri Unicode, può anche essere usato come tipo intero sul quale eseguire operazioni aritmetiche. Ad esempio, è possibile sommare due caratteri o incrementare il valore di una variabile carattere. Si consideri il programma seguente:

// Le variabili char si comportano come interi.
class DemoCarattere2 {
    public static void main(String[] args) {
        char car1;

        car1 = 'X';
        System.out.println("car1 contiene " + car1);

        car1++;               // incrementa car1
        System.out.println("car1 ora è " + car1);
    }
}

L'output generato da questo programma è il seguente:

car1 contiene X
car1 ora è Y
Consiglio

char come tipo intero

Nella specifica formale di Java, char è definito come un tipo intero, il che significa che appartiene alla stessa categoria generale di int, short, long e byte. Tuttavia, poiché il suo uso principale è la rappresentazione di caratteri Unicode, char è comunemente considerato una categoria a sé stante.