The Debugging Chronicles : "코드의 미학"
참조에 의한 호출 call By reference / 값에 의한 참조 Call by Value 본문
JAVA/자바 수업 내용
참조에 의한 호출 call By reference / 값에 의한 참조 Call by Value
sweetseonah1004 2024. 7. 29. 16:16참조에 의한 호출 call By reference
package class06;
public class Test02 {
public static void test(int[] datas) {
datas[0]=0;
}
public static void main(String[] args) {
// new 연산자 : 개발자 메모리 영역(heap)에 공간을 만들어줘.
int[] datas = new int[3];
for(int i =1; i<3; i++) {
datas[i]= (i+1)*10;
}
System.out.print("[ ");
// for Each 문, 향상된 for문, 배열과 함께 사용하는 for
for(int data:datas) {
//for(배열에 저장된 자료형 변수명 : 배열명)
//배열의 크기만큼 수행함
// index[0] 부터 변수가 해당 인덱스의 데이터를 대신함
System.out.print(data+" ");
}
System.out.print("]");
test(datas);
// new 로 제작한 변수를 전달하는 함수
// call by reference (참조에 의한 호출)
// 인자로 주고 받을 때 이야기
}
}
Call by Value (값에 의한 호출)
Java는 기본적으로 'Call by Value' 방식을 사용하고 있다.
메서드로 변수를 전달할 때 값이 복사되어 전달되는 방식을 의미한다. 메서드에 전달된 값은 인자를 복사해서 보낸 것이므로 메서드 내에서 변경되더라도 원래 변수 값에는 영향을 미치지 않는다.
[예시 코드]
void updateValue(int value) {
value = 55;
}
public static void main(String[] args) {
int value = 23;
updateValue(value);
System.out.println(value); // 출력: 23
}
Java 코드를 실행시켜보면 주석처리한 것과 같이 출력 값으로 23이 나올 것이다.
값에 의한 호출 방식은 메서드에 값을 전달했다 하더라도 복사본이 전달되는 것이지. 실제 값을 조작하는 것이 아니다
즉, 기존 값을 새로운 복사 값으로 생성해서 메서드에 전달하는 호출 방식이다.
각자 생성된 값은 다른 메모리 영역을 가지고 있으므로 변수에 영향을 주지 않는다.
'JAVA > 자바 수업 내용' 카테고리의 다른 글
오버로딩 : 함수명 중복정의 허용 (0) | 2024.07.29 |
---|---|
클래스 멤버변수 강제 (0) | 2024.07.29 |
메서드 시그니쳐 (0) | 2024.07.29 |
함수 4가지 유형 (0) | 2024.07.29 |
학생부 첫번째- CRUD, Flag 알고리즘, PK , 경계값 검사, (0) | 2024.07.29 |