1차원 배열 넘기기
public class Ex05_배열넘기기 {
public static void main(String[] args) { // static 메서드에서는 같은 static 메서드만 직접 호출 가능
int[] src = {3, 4, 5};
// 값 전달: 배열의 각 요소를 직접 꺼내서 전달
send(src[0], src[1], src[2]); // send() 호출 (static 메서드이므로 직접 호출 가능)
// 참조값 전달: 배열 자체를 전달 (주소값을 넘김)
send2(src);
System.out.println("main메서드 끝");
}
//main메서드 끝나는 중괄호
// 값 전달: 배열 요소를 하나씩 꺼내서 매개변수로 전달
public static void send(int a, int b, int c) {
System.out.println(a+"/"+b+"/"+c);
}
// 참조값 전달: 배열의 주소를 받아서 반복문으로 전체 요소 출력
public static void send2(int[] des) { // 매개변수로 배열의 참조값을 받아 반복문으로 출력
int i;
des[1] = 77; // 배열 값 수정 (원본에도 반영됨)
for(i=0; i<des.length; i++) {
System.out.print(des[i]+"~");
}
System.out.println();
}
}
- send() → 값 전달 방식, 원본 배열에는 영향 없음
- send2() → 참조값 전달 방식, 메서드 안에서 값 수정 시 원본 배열도 변경됨
- 자바에서 배열은 참조 타입이기 때문에, 주소값을 넘겨주면 효율적으로 처리 가능
2차원 배열 넘기기
public class Ex03_배열넘기기 {
public static void main(String[] args) {
// 2차원 배열 생성 (3행 3열)
int[][] arr = {
{1,2,3},
{4,5,6},
{7,8,9}
};
// 메서드 호출 → 배열을 넘겨줌
send(arr);
}
// 2차원 배열을 받아서 출력하는 메서드
public static void send(int[][] des) {
// 바깥 for문: 행(row)을 하나씩 반복
for(int i = 0; i < des.length; i += 1) {
// 안쪽 for문: 해당 행의 열(column)을 하나씩 반복
for(int j = 0; j < des[i].length; j += 1) {
// 각 원소 출력 (줄바꿈 없이 이어서 출력)
System.out.print(des[i][j]);
}
// 한 행이 끝나면 줄바꿈 (행 구분)
System.out.println();
}
}
}