Java/Tipi di dato: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m migrazione automatica di 3 collegamenti interwiki a Wikidata, d:q19366911 |
m Bot: sostituzione tag obsoleti |
||
Riga 2:
== Tipi ==
Un tipo di dati definisce un insieme di possibili valori e un insieme di operazioni che possono essere applicate su tali valori. Ad esempio, le scritture <
I tipi ammessi in un programma Java sono i seguenti:
Riga 20:
Non può neanche definire tipi array personalizzati, in quanto tutti i tipi array hanno un comportamento comune fissato dal linguaggio.
Il ''nulltype'' ammette un solo valore possibile, indicato con il valore letterale <
Il tipo ''void'' non ammette alcun valore ed è utilizzato come tipo di ritorno dei metodi che non restituiscono un valore.
Riga 57:
=== Differenze con il C++ ===
La dimensione dei tipi primitivi del Java non dipende dalla macchina su cui il programma è in esecuzione. Questo comportamento è differente rispetto a quello di altri linguaggi compilati in codice "nativo", primo fra tutti il linguaggio C++, nel quale i tipi base hanno dimensioni diverse a seconda che ci si trovi su una macchina piuttosto che su un'altra.<ref>Il programmatore C++ che desideri un tipo lungo esattamente ''n'' bits può importare <
Su una macchina il cui processore gestisce gli interi a 32 bit usando parole a 64 bit, un compilatore C++ potrebbe decidere di implementare le variabili ''int'' facendo occupare loro 8 byte anziché 4; in Java questo non è permesso: in questo esempio, anche se la macchina virtuale ''può'' decidere di utilizzare parole a 64 bit, questo rimane trasparente al codice Java che dalla VM è eseguito, nel quale il tipo ''int'' si comporta sempre esattamente come se fosse dotato di soli 32 bits.
Riga 100:
La famiglia dei tipi base e la famiglia dei tipi riferimento sono separate l'una dall'altra e definiscono due gerarchie distinte che non hanno alcun punto di giunzione. Per questo motivo, fino alla terza edizione della specifica di linguaggio, non erano ammesse conversioni tra tipi primitivi e tipi riferimento, né tramite ''cast'' implicito, né tramite ''cast'' esplicito.
Ogni classe wrapper permette di associare un oggetto a un valore del tipo primitivo corrispondente, e viceversa. Ad esempio, è possibile ottenere un oggetto <
Prima di Java 5, era necessario invocare esplicitamente i costruttori e i metodi <
L'operazione di inserimento di un valore primitivo in un oggetto ''tramite cast'' si chiama ''autoboxing''; l'operazione inversa (svolta sempre tramite cast) si chiama ''unboxing''.
Quindi, da Java 5 in poi, è possibile scrivere:
<
<
invece di:
<
<
in quanto la prima forma viene tradotta automaticamente dal compilatore.
Riga 116:
== Le stringhe ==
Una stringa è un'istanza della classe <
Esistono molte classi per la manipolazione delle stringhe. Quelle più comunemente utilizzate sono definite nel package <
*String (stringhe: oggetti immutabili, quindi [[Java/Multithreading|thread-safe]]);
*StringBuffer (oggetti modificabili e [[Java/Multithreading|thread-safe]]);
Riga 125:
*La creazione di una stringa avviene tramite l'invocazione dei costruttori (operazione sconsigliata) o tramite uno ''[[Java/Variabili_locali#Valori letterali|string literal]]''.
*La concatenazione di due stringhe si ottiene interponendo tra le due stringhe l'operatore di concatenazione <
<source lang="Java">
String s1 = "Ciao";
Riga 133:
System.out.println(s1+", amico, "+s2);
</source>
*Si possono confrontare le stringhe attraverso il metodo <
:'''Nota''': le stringhe si confrontano con il metodo ''equals'', ''non'' con l'operatore <code><nowiki>==</nowiki></code>. Infatti, due stringhe possono essere uguali pur essendo contenute in due oggetti diversi:
<
<
<
<
*Il numero di caratteri di una stringa si ottiene invocando il metodo <
== Bibliografia ==
|