Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...

is java support call by reference and call by value, if
supports please explain?

Answer Posted / sreevani

Java doesn't pass method arguments by reference; it passes
them by value.


Take the badSwap() method for example:

public void badSwap(int var1, int var2)
{
int temp = var1;
var1 = var2;
var2 = temp;
}


When badSwap() returns, the variables passed as arguments
will still hold their original values. The method will also
fail if we change the arguments type from int to Object,
since Java passes object references by value as well.
Now, here is where it gets tricky:

public void tricky(Point arg1, Point arg2)
{
arg1.x = 100;
arg1.y = 100;

Point temp = arg1;
arg1 = arg2;
arg2 = temp;
}

public static void main(String [] args)
{
Point pnt1 = new Point(0,0);
Point pnt2 = new Point(0,0);
System.out.println("X: " + pnt1.x + " Y: " +pnt1.y);
System.out.println("X: " + pnt2.x + " Y: " +pnt2.y);
System.out.println(" ");
tricky(pnt1,pnt2);
System.out.println("X: " + pnt1.x + " Y:" + pnt1.y);
System.out.println("X: " + pnt2.x + " Y: " +pnt2.y);
}

If we execute this main() method, we see the following
output:

X: 0 Y: 0
X: 0 Y: 0

X: 100 Y: 100
X: 0 Y: 0

The method successfully alters the value of pnt1, even
though it is passed by value; however, a swap of pnt1 and
pnt2 fails! This is the major source of confusion. In the
main() method, pnt1 and pnt2 are nothing more than object
references. When you pass pnt1 and pnt2 to the tricky()
method, Java passes the references by value just like any
other parameter. This means the references passed to the
method are actually copies of the original references.

Java copies and passes the reference by value, not the
object. Thus, method manipulation will alter the objects,
since the references point to the original objects. But
since the references are copies, swaps will fail. As Figure
2 illustrates, the method references swap, but not the
original references. Unfortunately, after a method call,
you are left with only the unswapped original references.
For a swap to succeed outside of the method call, we need
to swap the original references, not the copies.

Is This Answer Correct ?    26 Yes 9 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is the full form of jpeg?

1007


What is java thread dump, how can we get java thread dump of a program?

1072


Are global variables initialized to zero?

997


What is the difference between a scrollbar and a scrollpane?

1110


What is a singleton puppy?

1040


What is boolean flag in java?

1152


What is the destroy method?

1104


What is advantage of java?

1070


Explain the difference between extends thread vs implements runnable in java?

1195


Can we use string in the switch case?

1094


what are the disadvantages of indexes in oracle?

2637


Write the algorithm to check the number non-leaf nodes in a tree.

1125


What is xslt in java?

1022


Wha is the output from system.out.println(“hello”+null); ?

1211


What is the difference amongst jvm spec, jvm implementation, jvm runtime ?

1017