投稿者: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で書き換えるよね?みんな実体を返せばいいよ(´ω゚)アドレス書き換えはできない