처음부터 다시 하는 자바 공부는 인프런의 김영한 강사님의 강의를 참고해서 공부했다.
링크 : https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%9E%90%EB%B0%94-%EC%9E%85%EB%AC%B8
[지금 무료] 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 강의 - 인프런
프로그래밍에 처음 입문하는 분들을 위한 자바 강의입니다. 코드를 따라하면서 손쉽게 자바를 배울 수 있습니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 자바 입문[사진][임베
www.inflearn.com
메서드 호출과 값 전달1
지금부터 자바에서 아주 중요한 대원칙 하나를 이야기하겠다.(밑줄 100번 긋자!)
자바는 항상 변수의 값을 복사해서 대입한다.
이 대원칙은 반드시 이해해야 한다. 그러면 아무리 복잡한 상황에도 코드를 단순하게 이해할 수 있다.
자바는 항상 변수의 값을 복사해서 대입한다.
changeNumber(num1) 호출 시점
- num1 의 값 5를 읽고 복사해서 num2 에 전달 이 부분이 핵심
changeNumber메서드 실행 중
- num2 의 변경은 num1 에 영향을 주지 않는다. 왜냐하면 앞서 값을 복사해서 전달했기 때문.
최종 결과
메서드 호출과 값 전달2
메서드 호출과 이름이 같은 변수
같은 문제를 호출자의 변수 이름과 매개변수의 이름을 같게 해서 한번 더 풀어보자
package method;
public class MethodValue2 {
public static void main(String[] args) {
int number = 5;
System.out.println("1. changeNumber 호출 전, number: " + number); // 출력:5
changeNumber(number);
System.out.println("4. changeNumber 호출 후, number: " + number); // 출력:5
}
public static void changeNumber(int number) {
System.out.println("2. changeNumber 변경 전, number: " + number); // 출력:5
number = number * 2;
System.out.println("3. changeNumber 변경 후, number: " + number); // 출력:10
}
}
실행 결과
1. changeNumber 호출 전, number: 5
2. changeNumber 변경 전, number: 5
3. changeNumber 변경 후, number: 10
4. changeNumber 호출 후, number: 5
실행 과정
changeNumber(number); //changeNumber를 호출한다. main의number(5)
changeNumber(5); //number의 값을 읽는다.
//main의 number값 5가 changeNumber의 number에 복사된다.
//결과: main의 number(5), changeNumber의 number(5)
void changeNumber(int number=5)
//changeNumber의 number에 값 10을 대입한다.
//결과: main의 number(5), changeNumber의 number(10)
number = number * 2;
main의 number을 출력한다: main의 number의 값인 5가 출력된다.
메서드 호출과 값 반환받기
그렇다면 메서드를 사용해서 값을 변경하려면 어떻게 해야할까?
메서드의 호출 결과를 반환 받아서 사용하면 된다.
num1 = changeNumber(num1); //num1(5)
num1 = changeNumber(5);
//호출 시작:changeNumber()
//num1의 값 5가 num2에 대입된다. num1의 값을 num2에 복사한다. num1(5), num2(5)
int changeNumber(int num2=5)
num2 = num2 * 2; //계산 결과: num1(5), num2(10)
return num2; // num2의 값은 10이다.
return 10;
//호출 끝: changeNumber()
num1 = changeNumber(5);//반환 결과가 10이다.
num1 = 10;//결과: num1(10)
정리
꼭 기억하자! 자바는 항상 변수의 값을 복사해서 대입한다.
(참고로 뒤에서 참조형이라는 것을 학습하는데, 이때도 똑같다. 결국 참조형 변수에 있는 값인 참조값을 복사하는 것이다! )
'[JAVA]' 카테고리의 다른 글
[처음부터 다시 하는 JAVA] 메서드 2 (2) | 2024.01.22 |
---|---|
[처음부터 다시 하는 JAVA] 메서드 (1) | 2024.01.21 |
[처음부터 다시 하는 JAVA] 향상된 for문 (for-each) (2) | 2024.01.20 |
[처음부터 다시 하는 JAVA] 2차원 배열 (1) | 2024.01.18 |
[처음부터 다시 하는 JAVA] 배열 리펙토링 (1) | 2024.01.17 |