Tipi primitivi in java tipodefaultmem.daa booleanfalse1 bittrue false char'\u0000'16 bit byte08 bit short016 bit int032 bit-2^312^31-1 long0L64 bit-2^632^63-1 float0.0f32 bite,E esp10 x double0.0d64 bit
Particolarità tipi primitivi esadecimale: 0x1A ottale: 071 binario: 0b00100 float e double non sono "precisi" e non sono adatti per calcoli finanziari in java SE7 è possibile utilizzare l'underscore per rendere più leggibili le cifre. es: 0x00ff_f367, 1_000_000
cast e conversioni il tipo boolean non può essere convertito Non si può assegnare ad un float un valore di tipo double direttamente, ma bisogna usare il casting (se non ci sta.. Infinity) Si può sempre assegnare ad una variabile di tipo piu "grande" una di tipo più piccolo
cast e conversioni Per convertire double -> long (numeri con la virgola in interi) (int) x Math.round(x)fino a.5 Math.ceil(x)3.1 ->4 (intero maggiore) Math.floor(x)3.7 ->3 (intero minore) non ci sono problemi da long a double
numeri e testo In ogni stampa a video è implicita la conversione da numero a testo Per convertire in esadecimale, ottale, binario: Integer.toBinaryString( i ); Integer.toHexString( i ); Integer.toOctalString( i ); restituiscono una stringa senza 0,0x,0b
testo e numeri Possiamo estrarre un numero ad un testo utilizzando il metodo statico Integer.parseInt(s) Float.parseFloat(s) Long.parseLong(s) Double.parseDouble(s) Boolean.parseBoolean(s)
testo e numeri con parse.. attenzione: i vari metodi statici sono piuttosto "delicati" nel senso che dobbioamo passare nella stringa solo e soltanto il numero, senza aggiunta di spazi o altro; nel caso di Integer.parseInt e Long.parseLong si ha errore anche convertendo una stringa che rappresenti il numero con la virgola
prevenzione errore s = "123.3"; try { int a = Integer.parseInt(s); System.out.println("int " + a); } catch (NumberFormatException e) { System.out.println("err " + s); }
scansione di una stringa String s = "ciao"; s.length() /*lunghezza della stringa */ s.charAt(i) /*mostra il carattere nella posizione i (i=0 primo carattere) */ (int) s.charAt(i) /* mostra il codice ascii dell' i-esimo carattere */
ricerche in una stringa s.indexOf(sottoStringa) restituisce -1 se non ha trovato nulla, oppure l'indice della prima occorrenza s.contains(sottoStringa) restiuisce un boolean (true o false) s.lastIndexOf(sottoStringa) restituisce -1 se non ha trovato nulla, oppure l'indice della prima occorrenza partendo dal fondo
ricerche in una stringa i metodi indexOf e lastIndexOf hanno una anche una versione con un numero come secondo parametro. Questo numero rappresenta la posizione da cui iniziare a ricercare la sottostringa. Utile per trovare tutte le occorrenze… Tecnicamente il nome del metodo con la dichiarazione dei tipi di parametri passati si chiama firma o segnatura. Quando un metodo ha più firme si parla di overloading
Esercizi data una parola, scriverla tante volte quanto sono le sue lettere, ogni volta con una lettera maiuscola individuare il numero di parole in una frase data una stringa e una sottostringa, stampare a video la stringa originale con le occorrenze della sottostringa comprese tra [ ]