본문 바로가기
백엔드/Java

[Java]#17 Method 호출과 값 전달

by 쁘띠뀨띠 2023. 12. 20.

*자바는 항상 변수의 값을 복사해서 대입한다.

package method;

public class MethodValue0 {
    public static void main(String[] args) {
        int num1 = 5;
        System.out.println("1.변경 전 num1 = " + num1); //1.변경 전 num1 = 5

        changeNumber(num1);
        System.out.println("4.변경 후 num1 = " + num1); //4.변경 후 num2 = 5
    }

    public static void changeNumber(int num2) {
        System.out.println("2.변경 전 num2 = " + num2); //2.변경 전 num2 = 5
        num2 = num2 * 2;
        System.out.println("3.변경 후 num2 = " + num2); //3.변경 후 num1 = 10
    }
}

- changeNumber(num1) 의 출력값이 10이라고 생각될 수 있지만 여전히 5이다.

     메서드로 num1의 값을 복사해서 전달한다. 따라서 전달받은 num2의 5가되고 연산으로 10이 될 수 있지만,

     num1의 값은 영향을 받지 않는다.

 

package method;

public class MethodValue1 {
    public static void main(String[] args) {
        int number = 5;
        System.out.println("1.변경 전 number = " + number); //1.변경 전 number = 5

        changeNumber(number);
        System.out.println("4.변경 후 number = " + number); //4.변경 후 number = 5
    }

    public static void changeNumber(int number) {
        System.out.println("2.변경 전 number = " + number); //2.변경 전 number = 5
        number = number * 2;
        System.out.println("3.변경 후 number = " + number); //3.변경 후 number = 10
    }
}

- main에 정의한 변수와 메서드의 매개변수를 같은이름 number로 사용해도 위의 출력값과 똑같다.

     main도 메서드이다. 메서드 안에서 사용하는 변수는 완전히 분리된 다른 변수이다.

     따라서 main의 number와 changeNumber의 number은 이름은 같지만 다른 변수이다.

 

*메서드를 호출해 변경된 값을 얻으려면 다음과 같이 코딩한다.

package method;

public class MethodValue2 {
    public static void main(String[] args) {
        int num1 = 5;
        System.out.println("num1 = " + num1);

        num1 = changeNumber(num1);
        System.out.println("num1 = " + num1);
    }

    public static int changeNumber(int num2) {
        num2 = num2 * 2;
        return num2;
    }
}

'백엔드 > Java' 카테고리의 다른 글

[Java]#19 Method 오버로딩  (1) 2023.12.20
[Java]#18 Method와 형변환  (0) 2023.12.20
[Java]#16 Method 반환 타입  (0) 2023.12.20
[Java]#15 Method  (0) 2023.12.20
[Java]#14 향상된 For  (0) 2023.12.18