Originariamente inviato da m1ster_b1t
e le classi invoulcro...
Che vengono comunemente chiamate "wrapper" dei tipi primitivi.
Originariamente inviato da m1ster_b1t
cmq il io problema e che non riesco a capirle bene.
Acrei da fare un esercizio che deve leggere un valore long e ne stampa la conversione in short e in int.
qualcuno puo spiegarmi o farmi qualche esempio?
Se stai parlando della conversione tra tipi primitivi è semplice .... bastano dei cast (ovviamente devi sapere cosa può succedere al valore quando fai un cast ad un tipo primitivo più "ristretto").
codice:
long a = 12345678L;
int b = (int) a; // b vale 12345678, perché ci "sta" in un int
short c = (short) a; // c vale 24910 perché il long è troncato
Se invece parli di conversioni tra le classi "wrapper", le cose non sono così immediate. Un Long (java.lang.Long) non può essere convertito direttamente ad un altro wrapper!! Valgono in generale le regole della ereditarietà.
codice:
Long a = new Long(12345678L);
Integer b = (Integer) a; // ERRORE di compilazione!
Un Long è-un Number che è-un Object.
Per fare la conversione da Long a Integer si dovrebbe fare:
codice:
Long a = new Long(12345678L);
Integer b = new Integer(a.intValue());
O da Java 5 si può sfruttare l'auto-boxing/unboxing e fare una catena di 2 cast (che sembrerebbe un po' buffa/strana):
codice:
Long a = new Long(12345678L);
Integer b = (int)(long) a;
Un Long può essere auto-unboxato a long, un long può essere convertito a int, un int può essere auto-boxato a Integer.