javaの引数の引渡し作用についてよくわかりません
質問が連投になって大変申し訳ないのですが。
javaを学習中でありますが、引数の引渡し作用がいまいちわかりません。
class CallByValue{
public static void main(String args[]){
int i = 5;
int j[] = { 1, 2, 3, 4};
StringBuffer sb = new StringBuffer("abcde");
display(i, j, sb);
a(i, j, sb);
display(i, j, sb);
}
static void a(int i, int j[], StringBuffer sb) {
i = 7;
j[0] = 11;
sb.append("fghij");
}
static void display(int i, int j[], StringBuffer sb) {
System.out.println(i);
for(int index = 0; index < j.length; index++)
System.out.println(j[index] + " ");
System.out.println("");
System.out.println(sb);
}}
このコードで出されるメッセージは
5
1
2
3
4
abcde
5
11
2
3
4
abcdefghij
です。
main()で記述されている diplay()で一度表示して a()でstatic void a()の値を戻して変えて次の display()に表示といった順にメッセージを表示していると考えているのですが
static void a(int i, int j[], StringBuffer sb) {
i = 7;
j[0] = 11;
sb.append("fghij");
}
このコードをみると 7 11 2 3 4 fghijとなるのではないかと思います。
i = 7と書いているのにどうして i=5のままで出されるのでしょうか
またsb.append("fghij")と書かれているのにどうして abcdefghijと出されるのでしょうか。
よろしくお願い致します。