Forums Register Login

arguments to method

+Pie Number of slices to send: Send
public class abc{
public void method1(StringBuffer s1, StringBuffer s2){
s1.append("there");
s2 = s1;
}
public static void main(String args[]){
StringBuffer sb1 = new StringBuffer("Hello");
StringBuffer sb2 = new StringBuffer("Hello");
abc a = new abc();
a.method1(sb1,sb2);
System.out.println(" sb1 is " + sb1 + "and sb2 is " + sb2);
}
}

// The output of this is sb1 is Hellothere and sb2 is Hello.

can anybody explain me how this output has come.
+Pie Number of slices to send: Send
Here, s1 and s2 are passed by 'value'.
append method adds the string "there" to existing string "Hello" coz s1 is mutable.
public void method1(StringBuffer s1, StringBuffer s2){
s1.append("there");
s2 = s1;
}
However, s2 in method1 which is a copy of the reference s2 in main, simply points to s1 (bcoz of s2 = s1). Therefore s2 in main still contains "Hello"
Our first order of business must be this tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com


reply
reply
This thread has been viewed 753 times.
Similar Threads
String
Difference of equals method in string and stringbuffer
StringBuffer
String Buffer
about String & StringBuffer
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 07:54:49.