こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

javaの参照渡しの問題

javaの参照渡しの問題
javaの初心者で問題集で勉強しているのですが、
以下の問題の参照渡しの違いがわかりません。
-------------------------------------------
ソース1
class Samplea{
public void method(){
int b[] = new int[2];
set(b);
System.out.println(b[0]);
}
public void set(int[] b){
b[0] = 30;
}
}
class Sample{
public static void main(String srgs[]){
Samplea x = new Samplea();
x.method();
}
}
実行結果
30
-------------------------------------------
ソース2
public class Test{
public static void main(String args[]){
String s1= "Hello";
String s2= "Good-Bye";
change(s1,s2);
System.out.println(s1);
}
static void change(String s1,String s2){
s1 += ",Tom";
s1 = s2;
}
}
実行結果
Hello
-------------------------------------------

配列とString型は両方とも参照型なので
ソース1の実行結果が「30」ならば、
ソース2の実行結果は「Good-Bye」になると思いました。

どなたか教えていただけないでしょうか。
宜しくお願いいたします。

投稿日時 - 2010-05-24 17:31:33

QNo.5918681

困ってます

質問者が選んだベストアンサー

1 と 2 では全く異なる処理をしているので, 1 でおきた事象が 2 でもおきると思ったこと自体がおかしい. 2 で String となっているところを int[] にして (他にも変更点はあるけど) 試してみましたか?
中身が変更できないという Java の String 特有の現象もあるけど, 今の問題に関しては全く関係なし.

投稿日時 - 2010-05-24 18:08:39

お礼

>中身が変更できないという Java の String

Stringのメソッドはオブジェクトの操作ではなくて、オブジェクトを生成するものなんですね。
Stringの動きの意味が分からなくて困ってました。
助かりました。ありがとうございます。

投稿日時 - 2010-05-24 18:36:25

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問