※ ChatGPTを利用し、要約された質問です(原文:javaの参照渡しの問題)
javaの参照渡しの問題
このQ&Aのポイント
javaの初心者で問題集で勉強しているのですが、以下の問題の参照渡しの違いがわかりません。
配列とString型は両方とも参照型なので、ソース1の実行結果が「30」ならば、ソース2の実行結果は「Good-Bye」になると思いました。
どなたか教えていただけないでしょうか。宜しくお願いいたします。
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」になると思いました。
どなたか教えていただけないでしょうか。
宜しくお願いいたします。
お礼
>中身が変更できないという Java の String Stringのメソッドはオブジェクトの操作ではなくて、オブジェクトを生成するものなんですね。 Stringの動きの意味が分からなくて困ってました。 助かりました。ありがとうございます。