>Six Perfections 投稿者:Six Perfections 2009/04/27 (月) 03:59:53 ◆ ▼ ◇ [qwerty]> <ソース>
> public class test {
> public static void main(String[] args) {
> String sb1 = new String("aaa");
> String sb2 = new String("bbb");
> String sb3 = new String();
> String sb4 = new String();
> sb4=sb1;
> System.out.print("---stringchange実行前---" + "\n");
> System.out.print("sb1:" + sb1 + "\n");
> System.out.print("sb2:" + sb2 + "\n");
> System.out.print("sb3:" + sb3 + "\n");
> System.out.print("sb4:" + sb4 + "\n");
> System.out.print("\n");
> stringchange(sb1);
> sb4=sb1;
> System.out.print("---stringchange実行後---" + "\n");
> System.out.print("sb1:" + sb1 + "\n");
> System.out.print("sb2:" + sb2 + "\n");
> System.out.print("sb3:" + sb3 + "\n");
> System.out.print("sb4:" + sb4 + "\n");
>
> }
> static void stringchange(String sbchange) {
> sbchange = "xxx";
> }
> }
> <実行結果>
> ---stringchange実行前---
> sb1:aaa 僕の期待値:aaa
> sb2:bbb 僕の期待値:bbb
> sb3: 僕の期待値:
> sb4: 僕の期待値:aaa
> ---stringchange実行後---
> sb1:aaa 僕の期待値:xxx
> sb2:bbb 僕の期待値:bbb
> sb3: 僕の期待値:
> sb4:aaa 僕の期待値:xxx
> sb1を"xxx"へ変えたい(´ω゚)伴ってsb4の内容も書き換えたい(´ω゚)結論できない
> stringchangeではsb1変数の参照アドレスと同じ参照アドレスを保持した変数sbchangeが新規作成される
> sbchange = "xxx";が実行される前のsb1変数とsbchange変数は同じ1つのオブジェクト参照する(´ω゚)ここまでは値渡し
^^^^^参照渡し
> しかしながら(´ω゚)sbchange = "xxx";を実行した際に(´ω゚)xxxの実体が生成されsbchange変数の参照アドレスはxxxの実体用に再決定される。
> めちゃくちゃ疲れました結局returnで書き換えるよね?みんな実体を返せばいいよ(´ω゚)アドレス書き換えはできない
参考:2009/04/27(月)03時51分40秒