java - what is reference copying technique and why string object reference values is not changed? -
*strong text*what reference copying technique?
the reference copying technique more difficult use mutable objects, because if user of reference mutable object changes it, other users of reference see change another thing tested sample code below pass-by-value & pass-by-reference.the primitive values pass-by-value , object reference pass-by-reference.in sample example,i tested types 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 why string object not changed (**i.e.,variable sample1) after calling *tesingprimitivrefernce.generatestring(sample1).but in arraylist removed value "bbb" , automatically decrase size.here passed string object reference.so why not changed?*
i don't know told "primitive values pass-by-value , object reference pass-by-reference". wrong.
in java, pass-by-value.
now, objects not manipulated directly through references. multiple references can point same object these references copied other arguments.
Comments
Post a Comment