Java/기본

자바에는 Call by reference 가 없다 ..?

펭귄힝 2023. 7. 31. 16:33

Test.java

public class Test {
    public void run(String rename) {
        rename = "김민철";
    }
}

 

Main.java

public class Main {

    public static void main(String[] args) {
        Test test = new Test();
        String name = "홍길동";
        test.run(name);
        System.out.println("name = " + name);
    }
}

 

위와 같이 코드를 작성하였고 내가 예상했던 출력 결과는 name의 값이 김민철로 나오는 것이였다. 왜냐하면 String 은 참조 타입이고 메서드의 매개 변수로 참조 타입의 값을 주면 자바에서는 자동으로 Call-by-reference 를 호출 하는 줄 알았기 때문이다. 그런데 아래의 출력 결과를 보고 내가 생각했던 게 자바에서는 다르다는 걸 알 수 있었다.

 

 

 

 

출력 결과

 

 

 

위와 같이 예상 출력 결과인 "김민철" 이 아닌 "홍길동" 이 그대로 출력이 된다. 궁금증을 가지고 구글링을 해보니 아래 게시물을 발견할 수 있었다.

 

 

 

 

https://deveric.tistory.com/92

 

[Java] Java는 Call by reference가 없다

Call by Value와 Call By Reference가 뭘까? 프로그래밍을 하다 보면 꼭 알고 넘어가야 하는 개념이 있습니다. 바로 Call By Value, Reference입니다. 어떤 언어를 공부하든 나오는 개념이기도 합니다. Call by value

deveric.tistory.com

 

바로 자바에서는 Call by reference 를 사용하지 않는다는 것 ..!

많은 깨달음을 얻을 수 있는 게시물이었다.

(왜 내가 봤던 자바 책에는 이런 내용이 없었을까)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

자바에서는 Call-by-reference 를 사용하지 않는다는 사실을 명심하자.

'Java > 기본' 카테고리의 다른 글

자바에서의 연산  (0) 2022.12.05