Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Samos87
    Registrato dal
    Mar 2003
    Messaggi
    379

    [Java] principiante problemi con op ++

    Buonasera

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

    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..

    Questo é il codice:

    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:

    codice:
    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?

    Infatti se nel codice al posto di

    return a++;

    metto

    return a+1;

    funziona.. Perché?

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



    Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la realizza.
    "Albert Einstein"

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    ciao samos87

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

    codice:
    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à.
    codice:
    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.
    slack? smack!

  3. #3
    Utente di HTML.it L'avatar di Samos87
    Registrato dal
    Mar 2003
    Messaggi
    379
    Ok, grazie ho capito

    Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la realizza.
    "Albert Einstein"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.