| 데이터 타입 | 할당 방식 | 데이터 타입 예시 | alias(할당된 변수)의 값을 변경하면... |
| 기본형 (Primitive Type) | 값 (Value) 할당 | int, char, boolean, ... | original 값은 바뀌지 않는다 (다른 변수에 영향이 없다) |
| 참조형 (Reference Type) | 객체의 메모리 주소 할당(=참조) | 배열(Array), ... | original 값이 바뀐다. (참조하는 모든 변수에 영향을 미친다) |
이것을 함수의 내부 처리 방식으로 확인해보자.
● 코드 예시 1: value 할당 방식
함수 내부에서 아무리 장난질을 쳐도 원본 데이터가 변경되지 않는다.
public class Practice {
public static void main(String[] args) {
int n = 123;
System.out.println("초기 n = " + n);
function1(n);
System.out.println("main 복귀 n = " + n);
}
static void function1 (int n) {
n = n*n;
System.out.println("함수 내부 n = " + n );
}
}

● 코드 예시 2: 메모리 주소 할당 방식
함수 내부에서 값이 변경되면 원본 데이터가 변경된다.
import java.util.Arrays;
public class Practice2 {
public static void main(String[] args) {
// 원본 어레이
int[] arr = { 1, 2, 3 };
// 원본 데이터 확인:
System.out.println("main 함수의 원본 데이터 배열");
System.out.println(Arrays.toString(arr));
// 함수 호출
// function에 arr 자체를 넘겨줌 (address 할당)
function(arr);
// 원본 데이터 확인:
System.out.println("main 함수로 복귀하였음.");
System.out.println(Arrays.toString(arr));
}
static void function(int[] arr) {
arr[0] = 999;
arr[1] = 999;
System.out.println("함수 내부입니다.");
System.out.println(Arrays.toString(arr));
}
}

'Java > Java 기본 문법' 카테고리의 다른 글
| [Java] 파일 입출력 1 (경로 검색, 생성하기, 존재 여부, 읽기/쓰기 가능 여부, 삭제하기) (1) | 2025.01.02 |
|---|---|
| [Java] 문자열 슬라이싱 (Split 메소드) (1) | 2025.01.02 |
| [Java] 함수(Function) 기본 + void 함수란? (2) | 2024.12.31 |
| Java 기본 문법 - 정렬 (Sorting), 선택 정렬로 오름차순 내림차순 정렬하기 (1) | 2024.12.30 |
| Java 기본 문법 - break, continue, 탈출 루프를 지정하여 break, 2중 for 문 탈출 (0) | 2024.12.30 |