javaにおけるパラメータ伝達の詳細解:call by value(値による伝達)とcall by reference(引用による伝達)

1165 ワード

パラメーターの伝達するいくつか知識、そろっていない顔は指導を望みます。
call by value:値で送る
call by reference:引用による伝達
特徴:
call by value値を変えない、つまり操作は値のコピーですので、元の値は変わりません。
call by referenceは値を変えますが、実際のパラメータの参照アドレスは変わりません。他の参照も同じオブジェクトに向けられていると理解できる。
コード:
public  static void  st(String str){
   // System.out.println(str.hashCode());
    str = str.replace("1","2");
   // System.out.println(str.hashCode());
}
public static void st1(StringBuffer stringBuffer){
    stringBuffer.append("S");
    stringBuffer = new StringBuffer("567");
    stringBuffer.append("890");
}
public static void main(String...args){
    String s = "123";
    st(s);
    System.out.println(s);
    System.out.println(s.hashCode(););
    StringBuffer str1 = new StringBuffer("sss");
    System.out.println(str1);
    st1(str1);
    System.out.println(str1);
}
出力結果:
48690
49651
123
48690
sss
sss
String類のreplaceは、新しいStringオブジェクトを返して、strという参照を新しいオブジェクトに向けました。StringBufferのapped()メソッドは元のオブジェクトの値を操作し、元のオブジェクトを返します。
stingBuffer=
new
StringBuffer
567
)0この文はstingBufferを引用して新しい対象を指します。