javaにおけるパラメータ伝達の詳細解:call by value(値による伝達)とcall by reference(引用による伝達)
1165 ワード
パラメーターの伝達するいくつか知識、そろっていない顔は指導を望みます。
call by value:値で送る
call by reference:引用による伝達
特徴:
call by value値を変えない、つまり操作は値のコピーですので、元の値は変わりません。
call by referenceは値を変えますが、実際のパラメータの参照アドレスは変わりません。他の参照も同じオブジェクトに向けられていると理解できる。
コード:
48690
49651
123
48690
sss
sss
String類のreplaceは、新しいStringオブジェクトを返して、strという参照を新しいオブジェクトに向けました。StringBufferのapped()メソッドは元のオブジェクトの値を操作し、元のオブジェクトを返します。
stingBuffer=
new
StringBuffer
567
)0この文はstingBufferを引用して新しい対象を指します。
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を引用して新しい対象を指します。