PDA

View Full Version : [java] letterali e cast


vittorio130881
04-02-2013, 10:54
ciao a tutti
sto iniziando java da poco ma gia non ho capito alcune cose....sto messo bene direte voi??? :cry:

allora i letterali.....
se io scrivo int i=2; i varrà due;
se scrivo int i=2.34; i non sarà un intero ma un double ho capito bene???
float r=3; r sara intero???
dovevo scrivere float r=3f per farlo essere double giusto?


poi mi spiegate i cast e le operazioni con variabili di tipo diverso???
se scrivo int j=2;
double h=3.5;

r=j*h;

r che deve essere? immagino un double giusto?



infine se ho int u =1;
int p=2;
doul g;
g=2+1;

si può fare? e varrà double immagino giusto? o devo fare qualche cast?

VICIUS
05-02-2013, 07:48
ciao a tutti
sto iniziando java da poco ma gia non ho capito alcune cose....sto messo bene direte voi??? :cry:

allora i letterali.....
se io scrivo int i=2; i varrà due;
se scrivo int i=2.34; i non sarà un intero ma un double ho capito bene???
La variabile i è dichiarata come int ma cerchi di assegnargli un valore double. Il compilatore non può convertire 2.34 in intero senza troncare il numero a 2 facendoti perdere parte dell'informazione. Quindi se provi a compilare quel codice ti darà errore. Se la parte decimale del numero non ti interessa puoi eseguire un cast esplicito aggiungendo un (int) davanti al numero ed ottenere un intero.

float r=3; r sara intero???
In questo caso la variabile è un float ed il numero un intero. In java puoi sempre passare da int ad un float o un double ed essere sicuro che nella maggior parte dei casi di non perdere alcuna informazione. Quindi il compilatore in questo caso prende il tuo numero intero e lo converte in un float senza dirti niente.


dovevo scrivere float r=3f per farlo essere double giusto?
Fa attenzione a non confondere float e double perché sono due tipi diversi. In questo caso aggiungendo la "f" al numero espliciti che il valore debba essere interpretato come un float. Per un double avresti dovuto mettere "d".


poi mi spiegate i cast e le operazioni con variabili di tipo diverso???
se scrivo int j=2;
double h=3.5;

r=j*h;

r che deve essere? immagino un double giusto?
Giusto. Se hai un operazione tra due varibili con tipi diversi il risultato è sempre del tipo della variabile che ha precisione maggiore. Se devi sommare un byte ed un intero il risultato è un intero. Se devi dividere un double per un intero il risultato è un double. ecc.



infine se ho int u =1;
int p=2;
doul g;
g=2+1;

si può fare? e varrà double immagino giusto? o devo fare qualche cast?
In questo caso 2+1 fa 3 che è un intero. Puo essere convertito in double senza problemi quindi non da errori.

vittorio130881
05-02-2013, 09:14
grassie mille!!!!