Problemi di reference o di testa!!!!

di il
9 risposte

Problemi di reference o di testa!!!!

Salve a tutti ragazzi piacere di essere qui con voi, come da titolo non riesco a farmi entrare in testa le reference, oddio, diciamo che a livello teorico penso pure di aver capito il concetto,, ma dal lato pratico fatico.
per esercizio mi sono creato:
- una classe che somma 2 numeri.
- un medoto che passa due valori alla classe e stampa il risultato.
a questo punto ho creato una reference e vorrei controllare se effettivamente contiene il dato essatto.
queto il codice:

public class Variabile {
	public Variabile (int a, int b){
		c=a;
		d=b;
	}
	int c;
	int d;
	
	public int somma() {
		int somma;
		somma = c+d;
		return somma;
	}
}
se avete accorgimenti,suggerimenti o critiche fate pure grazie.

public class Reference {
	public static void main(String args[]){
		Variabile reference1 = new Variabile(1,2);
	    Variabile reference2 = reference1;
	
	System.out.println("Valore della Reference1 : "+reference1.somma());
	System.out.println("Volore della Reference2 : "+reference2.somma());
	}
	
}
ecco qui, sinceramente non credo che vada bene perche ho come la sensazione che la
"reference2" passi semplicemente i numeri al metodo "somma()" che mi rifa' l'operazione e mi dia lo stesso risutato....

forse sbaglio io nell'approccio o con il tipo di esercizio, ma se mi date qualche suggerimento o un esempio su cui lavorare ve ne sarei grato
Grassieeeee

9 Risposte

  • Re: Problemi di reference o di testa!!!!

    fabbio ha scritto:


    ecco qui, sinceramente non credo che vada bene perche ho come la sensazione che la
    "reference2" passi semplicemente i numeri al metodo "somma()" che mi rifa' l'operazione e mi dia lo stesso risutato....
    Ma non so esattamente cosa volevi o ti aspettavi di ottenere. La istanza (oggetto) di Variabile che hai è una sola, reference1 e reference2 fanno riferimento quindi allo stesso medesimo oggetto. Pertanto somma() fornisce chiaramente lo stesso valore, a fronte di quel medesimo "stato" dell'oggetto Variabile.
  • Re: Problemi di reference o di testa!!!!

    Ciao,
    quello che sabgli è che reference 2 non serve.
    Una variabile reference è una variabile che punta ad un oggetto (il quale è un istanza di una classe),nel tuo caso hai la reference1 che punta ad un oggetto A (x esempio), e la reference 2 che punta allo stesso oggetto A poichè hai fatto reference2=reference1;
    Quindi le due reference puntano alla stessa cosa ed è normale che ti stampino lo stesso risultato poichè tutte e due vanno ad agire sulla stessa istanza dell'oggetto.
    Se vuoi fare somme diverse devi fare che reference2= new Oggetto() oppure al metodo somma fai passare due variabile intere cosi la somma sarà diversa.
    Ti consiglio inoltre di dichiarare le variabili prima del costruttore(x ordine visivo) e poi puoi fare direttamente return this.c+this.d senza calcoli inutili-


    Spero di essere stato chiaro.
  • Re: Problemi di reference o di testa!!!!

    Chiarissime tutte e due le risposte, grazie mille.
    si, tutte e due puntano allo stesso oggetto e mi danno in effetti lo stesso risutato.

    -quello che volevo raggiungere con la "reference2" era di fargli stampare il sua valore dopo l'associazione, senza fargli fare di nuovo l'operazione alla "riga 7",solo per controllare che effettivamente la reference2 avesse fatto il suo dovere....

    ad esempi per esercizi sto messo male, non mi viene in mente niente su cui provare a giocare con le reference

    grazie ancora!!!
  • Re: Problemi di reference o di testa!!!!

    Scusa quale valore vuoi stampare? che la reference2 punti effettivamente allo stesso oggetto della 1?
    Non ho capito.
    Per le reference non servono esercizi , si usano sempre in ogni cosa che fai .
  • Re: Problemi di reference o di testa!!!!

    Si esatto, vorrei stampare il valore della reference2 senza passarla al modulo somma()
    
    System.out.println("Volore della Reference2 : "+reference2.somma());
    
    perche senza ".somma()" mi stampa solatanto il suo indirizzo in memoria:
    
    Volore della Reference2 : Variabile@2a139a55
    
  • Re: Problemi di reference o di testa!!!!

    Comunque grazie a tutti, credo di aver capito il funzionamento delle reference e mi sa che mi sto perdendo in bicchere di acqua lolllll
    procedo oltre con lo studio!!!!!
  • Re: Problemi di reference o di testa!!!!

    fabbio ha scritto:


    vorrei stampare il valore della reference2
    Detto così, ha poco senso. In Java i reference sono un qualcosa di molto "opaco". Un reference o è null o fa riferimento ad un oggetto. Non può essere diversamente da questi casi.
    Sotto sotto, per la JVM, un reference diventa in un qualche modo alla fin fine un "puntatore" in memoria ma per il programmatore Java questo e come avviene NON è importante e non puoi farci nulla in tal senso.

    fabbio ha scritto:


    
    Volore della Reference2 : Variabile@2a139a55
    
    Questo è il risultato del toString(), di java.lang.Object poiché nella tua classe non hai ridefinito appunto il toString(). E il toString() di Object "sa" stampare solo quella forma che vedi.
  • Re: Problemi di reference o di testa!!!!

    Perfetto andbin... colto al volo il senso grazie!!!
    proseguo con "gli operatori e la gestione dei flussi" e che Java me la mandi BBuonaaa

    andbin, ma tu sei pure su html.it ???
  • Re: Problemi di reference o di testa!!!!

    fabbio ha scritto:


    proseguo con "gli operatori e la gestione dei flussi" e che Java me la mandi BBuonaaa
    Ok, vedi pure operatori/flusso (che difficili non sono) ma tieni presente che i concetti object-oriented (classi, ereditarietà/polimorfismo, metodi, overload/override ecc..) sono molto più importanti sebbene più difficili.

    fabbio ha scritto:


    andbin, ma tu sei pure su html.it ???
    Oh yes.
Devi accedere o registrarti per scrivere nel forum
9 risposte