javaでは基本データ型では変数域に値そのものが入りますが、配列の場合は、配列の実態データではなく、格納域のアドレスが入る。したがって、以下のような配列aを別の配列bに代入すると、格納域へのアドレスが複写され、bもaと同じ実態である{10,20,30,}を指すことになる。すなわちa[0]=15とするとb[0]も15になる。配列の値をそっくり別の領域に移したいときは、1つずつ取り出してコピーする必要がある。

1: int[] a={10.20,30};

2: int[] b={40,50};

3: b=a;

4: a[0]=15;


配列aの値をそっくり配列cに移すプログラムを以下に示す。

1: int[] a={10.20,30};

2: int[] c ;

3: c[0]=a[0]; c[1]=a[1]; c[2]=a[2];


このように変数域に(データではなく)アドレスが入っている変数の肩を、参照型という。javaでは基本データ型以外の変数はすべて参照型。参照型のデータはnewで確保する必要がある。


文字列の比較では、普通アドレスそのものではなく、文字列として同じかどうかを比較したいので、a.equals(b) と書いてアドレスがさしている実態そのものを比較する。