Javaにおいて、メソッド引数で参照渡しとなるのは配列とオブジェクトの場合のみです。それ以外の場合は値渡し (コピー) です。
sample.java
class Sample {
public static void main(String args[]) {
// int型変数、配列、オブジェクト
int val = 128;
int arr[] = {1,2,4,8};
StringBuffer sb = new StringBuffer("ABC");
myPrint(val,arr,sb);
modify(val,arr,sb); // 配列とオブジェクトは参照渡し
myPrint(val,arr,sb);
}
static void modify(int val, int arr[], StringBuffer sb) {
val = 256;
arr[0] = 16;
sb.append("DEF");
}
static void myPrint(int val, int arr[], StringBuffer sb) {
System.out.println(val);
for(int i=0; i<arr.length; ++i)
System.out.print(arr[i]+" ");
System.out.println("");
System.out.println(sb);
}
}
実行例
$ javac sample.java && java Sample
128
1 2 4 8
ABC
128
16 2 4 8
ABCDEF