Shankar, you always pass Objects by reference, only primitives (int, char, ...) are 
passed by value since they are not real objects in Java. In your sample, you mix up 
variables and objects. Variables are just names for objects.

When you call a method with parameters you pass the object behind the variable not the 
variable itself. The parameter variable within the fill-method (fillMe) is not the 
same as the local variable in the main method (intFill). When the fill-Method is 
called the value of the intFill-Variable, which is a reference to an Integer-Object, 
is copied to fillMe-Variable. Changing the value of the intFill-Variable to a 
reference to a new Integer-Object does not change the value of the intFill-Variable. 
It is still referencing/pointing to the original Integer-Object.

Regards,
Kim

-----Urspr�ngliche Nachricht-----
Von: H Shankaranarayanan [mailto:[EMAIL PROTECTED]]
Gesendet: Freitag, 31. Mai 2002 09:31
An: JDJList
Betreff: [jdjlist] Java : pass by reference???


class test
{
    /**
     *  Description of the Method
     *
     *@param  fillMe  Description of the Parameter
     */
    public void fill(String fillMe)
    {
        fillMe = "test";
    }


    /**
     *  Description of the Method
     *
     *@param  fillMe  Description of the Parameter
     */
    public void fill(Integer fillMe)
    {
        fillMe = new Integer(100);
    }


    /**
     *  Description of the Method
     *
     *@param  args  Description of the Parameter
     */
    public static void main(String args[])
    {

        try
        {
            test objTest = new test();
            String testfill = new String("main");
            objTest.fill(testfill);
            System.out.println("Fill me result:" + testfill);

            Integer intFill = new Integer(200);
            objTest.fill(intFill);
            System.out.println("Fill me result:" + intFill);

        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}


That is a sample program i wrote to test this fact. The result is dependent
on scope of the variable.
So wots this pass by reference concept that every text book around the world
states about Java.

How does the pass by reference concept work anyways?

I might have missed something here. If i did i would appreciate if anyone
told me wot is it that i did miss.

I was expecting this program to work otherwise but it does not.

--Shankar


To change your membership options, refer to:
http://www.sys-con.com/java/list.cfm

To change your membership options, refer to:
http://www.sys-con.com/java/list.cfm

Reply via email to