投稿者:Six Perfections 2009/04/27 (月) 03:51:40        [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で書き換えるよね?みんな実体を返せばいいよ(´ω゚)アドレス書き換えはできない