Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    14

    ....passaggio di variabili ad un metodo

    Vorrei dei chiarimenti sul passaggio di variabili ad un metodo.
    Considerati tre tipi di variabili: primitive (es. int), di classe (es. String), definite dal programmatore (es. MyClass);
    quali sono passate per riferimento e quali per valore.
    A me sembra che le prime due sono passate per valore e l'ultima per rifermento (Vedi l'esempio sotto). Ma non ho trovato conferma in nessuna parte.


    class MyClass{
    int tmp=0;
    }
    public class Riferimento{

    public static void main(String argv[]){
    Riferimento t = new Riferimento();
    String myString="msg";
    int myInt=12;
    MyClass myObj=new MyClass();
    myObj.tmp=1;
    System.out.println("myString:"+myString+"myInt"+my Int+"myObj"+myObj.tmp);
    t.go(myString,myInt,myObj);
    System.out.println ("myString:"+myString+"myInt"+myInt+"myObj"+myObj. tmp);
    }//End of main
    public void go(String rifString,int rifInt,MyClass rifObj ){
    f=f.concat("ooo");
    rifInt=23;
    rifObj.tmp=123;
    }//End of go */
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Vedi se questo esempio puo' aiutarti:

    codice:
    class Test {
    	int x;
    	String str;
    	MyClass myObj;
    
    	Test() {
    		x = 10;
    		str = "Ciao";
    		myObj = new MyClass();
    
    	}
    
    	public static void main(String args[]) {
    		Test t = new Test();
    		t.prova(t.x, t.str, t.myObj);
    		System.out.println(t.x);
    		System.out.println(t.str);
    		t.myObj.show();
    	}
    
    	public void prova(int n, String s, MyClass obj) {
    		n = 30;
    		s = "Nuova Stringa";
    		obj.msg = "Cambio tutto";
    		System.out.println(n);
    		System.out.println(s);
    		obj.show();
    	}
    }
    
    class MyClass {
    	public String msg = "Dentro MyClass";
    	public void show() {
    		System.out.println(msg);
    	}
    }
    In java ogni variabile e' passata per valore.
    Cio' implica che i tipi fondamentali vengano copiati all'interno delle variabili passate al metodo.
    Anche i nomi degli oggetti sono delle variabili, anche esse vengono quindi passati per valore, ma l'oggetto e' sempre quello, non viene copiato all'interno del metodo. Il nome dell'oggetto all'interno del metodo e' un riferimento all'oggetto esterno.
    Scusa se non e' abbastanza chiaro, ma sto andando di fretta, se hai altri dubbi riprovero' quando torno (se non ci pensa qualcun' altro prima )

    L'ultima cosa: utilizza i tag per formattare il codice, please.
    Ciao,
    Lorenzo

  3. #3
    Veramente i primitivi sono passati x valore, gli oggetti x riferimento!!!

    + semplice di così!:gren:
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  4. #4
    No blinkago, sbagli. In Java, tutti gli argomenti passati ai metodi sono passati per valore. Maggiori informazioni quì.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  5. #5
    For a method to modify an argument, it must be of a reference type such as an object or array. Objects and arrays are also passed by value, but the value of an object is a reference. So the effect is that arguments of reference types are passed in by reference. Hence the name. A reference to an object is the address of the object in memory. Now, the argument in the method is referring to the same memory location as the caller.

    Visto! sono passati per valore, però l'effetto è x riferimento!
    Visto che bisogna spiegare, stiamo semplici!:gren:
    mi sembra inutile spiegare cose così astratte se poi l'uso è quello che ho indicato io!
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  6. #6
    Visto che si deve spiegare, si spiega come effettivamente stanno le cose, ma nella maniera più semplice possibile.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  7. #7
    Originariamente inviato da Dwenegar
    Visto che si deve spiegare, si spiega come effettivamente stanno le cose, ma nella maniera più semplice possibile.
    facile!!!:gren:
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

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 © 2025 vBulletin Solutions, Inc. All rights reserved.