********************************************************************************* Appunti di JAVA License: GPL Author: Marco Segato <segatom(at)yahoo(dot)it> aka Mach <tumin17(at)yahoo(dot)it> Website: http://www.marcosegato.tk/ irc: irc.azzurra.org ---> #lonelzero ********************************************************************************* ********************************************************************************* Capitolo 1. Appunti di JAVA - "Tipi di dati e variabili" ********************************************************************************* ------------------------ 1.1 \ TIPI PREDEFINITI ------------------------ In JAVA esistono dei tipi predefiniti di dati, ma teoricamente, essendo un linguaggio ad oggetti, sarebbe possibile crearsene infiniti semplicemente definendone di nuovi. Di seguito una lista dei tipi predefiniti con tipo, dimensioni e intervallo di validita': - VALORI NUMERICI INTERI: | byte | 8 bit | da -128 a +127 | short | 16 bit | da -32768 a +32767 | int | 32 bit | da -2147483648 a +2147483647 | long | 64 bit | da -9223372036854775808 a +9223372036854775807 - VALORI NUMERICI A VIRGOLA MOBILE: | float | 32 bit | 7 cifre dopo la virgola | double | 64 bit | 16 cifre dopo la virgola - CARATTERI: | char | 16 bit | da -32768 a +32767 Per la rappresentazione dei caratteri, JAVA fa riferimento alla codifica Unicode per mantenere le proprie caratteristiche di portabilita' sui vari sistemi operativi; nella dichiarazione, il carattere deve essere racchiuso tra una coppia di apici singoli: char c = 'a'; Esistono dei caratteri che non sono visibili nella formattazione di un testo, ma sono necessari quando si tratta di andare a gestire delle stringhe quando si fa della programmazione: ' diventa \' " diventa \" \ diventa \\ "Ritorno a capo" diventa \r "Nuova riga" diventa \n "Avanzamento modulo" diventa \f "Tabulazione" diventa \t "Backspace" diventa \b - VALORI BOOLEANI: Quando e' necessario assegnare a degli oggetti o a delle variabili una condizione di verita', si ricorre all'uso dei booleani, che possono assumere solamente due valori: vero o falso; in JAVA si usano cosi': boolean a = true; boolean b = false; ------------------- 1.2 \ LE STRINGHE ------------------- Quando andiamo a gestire della stringhe in JAVA, ci imbattiamo concretamente nella caratteristica principale di questo linguaggio: gli oggetti; le stringhe sono appunto degli oggetti di una classe a cui possiamo applicare dei metodi per modificarne lo stato. Nella dichiarazione, definiamo una stringa come una sequenza di caratteri racchiusa tra una coppia di apici doppi: String nome = "Mach"; E' importante ricordare che le spaziature all'interno delle stringhe assumono un valore letterale, e che per indicare la posizione dei caratteri che compongono una stringa si parte da 0; quindi: +===========+===+===+===+===+===+===+===+===+===+===+===+ | STRINGA | M | a | c | h | | r | u | l | e | z | ! | +===========+===+===+===+===+===+===+===+===+===+===+===+ | POSIZIONE | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| +===========+===+===+===+===+===+===+===+===+===+===+===+ Tutto cio' e' assai importante perche', quando successivamente si vedranno i metodi da applicare alle stringhe, otterremo che la stringa "Mach rulez!" sara' lunga 11 caratteri, e la sua sottostringa (2,7) sara' "ch rule". -------------------- 1.3 \ LE VARIABILI -------------------- Quando manipoliamo dei dati, abbiamo bisogno di uno strumento che ci permetta di memorizzarli per poi gestirli o modificarli; questo strumento e' la variabile, che in JAVA si inizializza secondo questo schema generale: <tipo> <nome_variabile> < = inizializzazione>; Ad esempio: int tumin = 17; // assegnamo il valore 17 alla variabile tumin Dichiarazione e inizializzazione possono avvenire anche in tempi diversi, a patto pero' che la prima preceda sempre la seconda: int tumin; // dichiarazione ... [blocco di istruzioni] ... tumin = 17; // inizializzazione E' possibile infine dichiarare e/o inizializzare contemporaneamente piu' variabili dello stesso tipo: int a, b, c; int a, b, c = 8; int a = 32, b, c = 34; ------------------- 1.4 \ LE COSTANTI ------------------- Nel corso di un programma potremmo avere bisogno di una costante, di una variabile cioe' che mantenga durante tutta l'esecuzione lo stesso valore; in JAVA la si inizializza anteponendo la parola "final" alla dichiarazione della variabile: final int NOME_COSTANTE = 23; Solitamente, per distinguerle facilmente, e' buona norma scrivere le costanti tutte in maiuscolo. --------------------------------------- 1.5 \ CONVERSIONI IMPLICITE E CASTING --------------------------------------- Nel corso del programma potremmo avere la necessita' di convertire un dato di un certo tipo in un altro; in determinati casi tutto cio' puo' avvenire in modo del tutto automatico: se osserviamo la tabella del capitolo 1.1 dei tipi numerici interi, ci accorgiamo che il tipo "int" e' compreso nell'intervallo del tipo "long", quindi se noi andremo a convertire un "int" in "long" non avremo alcun problema. Ad esempio: int num1 = 77; long num2 = num1; // ora anche la variabile num2 vale 77 Otteniamo un errore invece quando tentiamo di convertire implicitamente un "int" in "byte": int num3 = 345; byte num4 = num3; // ERRORE! il numero 345 non appartiene al tipo byte Come fare allora in questi casi? Ricorriamo al cosiddetto "casting" o conversione esplicita che, a discapito di una possibile perdita di precisione, ci permette di convertire un tipo in un altro: (nuovo_tipo)valore; Ad esempio: double num5 = 7.87; int num6 = (int)num5; // num6 vale 7, cioe' la parte intera di 7.87 Proprio quest'ultimo caso ci da uno spunto: come faccio allora ad arrotondare un numero decimale? Devo utilizzare il metodo "round" della classe "Math", il cui risultato e' un numero intero di tipo long: double num7 = 7.87; long num8 = Math.round(num7); // num8 vale 8 int num9 = (int)Math.round(num7); // num9 vale 8 ma l'ho trasformato in int