PDA

Visualizza la versione completa : [Java] principiante problemi con op ++


Samos87
23-01-2005, 20:48
Buonasera :D

Sto iniziando a studiare Java, ho comprato Thinking in Java seconda edizione e sono al capitolo 2 :fagiano: ..

Ho provato a modificare un esercizio che mi ha dato il libro, ma non riesco a capire perché l'operatore ++ non funziona in un oggetto che ho creato.. :fagiano:

Questo é il codice:



public class ProvaStatic {

static int i = 23;

static void incr(){

ProvaStatic.i++;
}

public int incr2(int a) {

return a++;
}

public static void main(String args[]) {
int l = 32;
ProvaStatic.incr();
System.out.println(ProvaStatic.i);
ProvaStatic agg = new ProvaStatic();
System.out.println(agg.incr2(l));
}



}



Compilo e questo é il risultato:



Waikiki:~/Documents/Programmazione/Java andreasamo$ javac ProvaStatic.java
Waikiki:~/Documents/Programmazione/Java andreasamo$ java ProvaStatic
24
32
Waikiki:~/Documents/Programmazione/Java andreasamo$


Il secondo numero dovrebbe essere 33, no? :fagiano:

Infatti se nel codice al posto di

return a++;

metto

return a+1;

funziona.. Perché?

Grazie 1000, illuminatemi se ho fatto qualche fagianata, please.. :D



:ciauz:

cacao74
24-01-2005, 00:56
ciao samos87

c'e una sottile quanto profonda differenza nell'utilizzo dell'operatore '++' come prefisso piuttosto che postfisso.



public int incr2(int a) {
return a++;
}

Il metodo restituirà il valore della variabile primitiva a e successivamente ne incrementerà il valore di una unità.


public int incr2(int a) {
return ++a;
}

In questo caso viene prima incrementato il valore di a, quindi viene restituito al metodo chiamante.


Esempio terra terra:
int a = 10;
System.out.println("a: " + a);
System.out.println("a++: " + (a++));
System.out.println("a: " + a);
System.out.println("++a: " + (++a));
System.out.println("a: " + a);

Stesse condiderazioni per l'operatore '--'

Ciao.

Samos87
24-01-2005, 08:47
Ok, grazie ho capito :)

:ciauz:

Loading