*strong text*what is reference copying technique?
The reference copying technique is much more difficult to use for mutable objects, because if any user of a reference to a mutable object changes it, all other users of that reference will see the change
Another thing I tested sample code below for pass-by-value & pass-by-reference.The primitive values are pass-by-value and object reference are pass-by-reference.In the sample example,I tested types a string contant,String object,String buffer,int,ArrayList.
String s="foo";
String sample1=new String("dog");
StringBuffer sb=new StringBuffer();
sb.append("abc");
ArrayList l=new ArrayList();
l.add("ssss");
l.add("bbbb");
l.add("ssbbbss");
l.add("bbbb");
l.add("bbbb");
int k=14,listsize=0;
listsize=l.size();
TesingPrimitivRefernce.generateString(s);
TesingPrimitivRefernce.generateString(sample1);
TesingPrimitivRefernce.generateStringBuilder(sb);
TesingPrimitivRefernce.generateInt(k);
TesingPrimitivRefernce.generateNewList(l);
System.out.println("String============"+s+" String Buffer========"+sb+" String object "+sample1);
System.out.println("int Primitive Values==="+k);
System.out.println("Orignal List Size"+listsize+" After called method List Size=========="+l.size());
public static void generateString(String s){
s=s.concat("d");
}
public static void generateStringBuilder(StringBuffer s){
s=s.append("d");
}
public static void generateInt(int s){
s=10;
}
public static void generateNewList(ArrayList list){
list.remove("bbbb");
}
My doubt is why String object is not changed (**i.e.,variable sample1) after calling *TesingPrimitivRefernce.generateString(sample1).but in the arraylist i removed the value "bbb" and automatically decrase size.Here I passed String object reference.So why it is not changed?*