int, double 等の基本データ型をメソッドに渡してその内部で値変更し、値を呼び出し元で取得する方法です。 C言語で関数の引数にポインタを渡し、関数内で結果を格納するのと同様の処理を実現する方法です。クラスオブジェクトを渡した場合は同オブジェクトを参照しているためそのまま変更が反映されます。基本クラスはそのままメソッド引数に渡しても既に別変数にコピーされて渡されるため、配列に入れて渡すとクラスオブジェクトとして扱われるため呼び出し元でも変更した値を取得できます。
[StdDataFerry.java]
/**
* 基本データ型(int)のメソッド参照渡しテストクラス
*/
public class StdDataFerry {
/**
* Integer 渡し(無意味)
*/
static void add(Integer ival) {
ival = new Integer(ival.intValue() + 1);
}
/**
* 配列渡し
*/
static void add(int[] ival) {
for(int i = 0; i < ival.length; i++) {
ival[i]++;
}
}
public static void main(String[] args) {
int a = 0;
Integer ival = new Integer(a);
add(ival);
a = ival.intValue();
System.out.println("add(Integer ival) a = " + a);
a = 0;
int[] as = new int[]{a};
add(as);
a = as[0];
System.out.println("add(int[] ival) a = " + a);
}
}
実行結果
add(Integer ival) a = 0
add(int[] ival) a = 1