Knowledge

call by reference/call by value

seulye 2022. 4. 13. 16:53

1. call by value (๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ)

  • ์žฅ์  : ๋ณต์‚ฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๋‹ค. ์›๋ž˜์˜ ๊ฐ’์ด ๋ณด์กด์ด ๋œ๋‹ค.
  • ๋‹จ์  : ๋ณต์‚ฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚œ๋‹ค.

 

2. call by reference (์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ)

  • ์žฅ์  : ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์ฐธ์กฐ๋ฅผ ํ•˜๊ธฐ์— ๋น ๋ฅด๋‹ค.
  • ๋‹จ์  : ์ง์ ‘ ์ฐธ์กฐ๋ฅผ ํ•˜๊ธฐ์— ์›๋ž˜ ๊ฐ’์ด ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.(๋ฆฌ์Šคํฌ)

 

์ž๋ฐ”๋Š” ํ™•์‹คํ•˜๊ฒŒ Call by Value ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ํฌ์ธํ„ฐ๋„ ์—†๋‹ค. 

 

 

 

- call by reference ๊ตฌํ˜„

public class SwapTest {
    int value;
    
    public SwapTest(int value) {
        this.value = value;
    }
    public static void swap(SwapTest a, SwapTest b) {
        int temp = a.value;
        a.value = b.value;
        b.value = temp;
    }
 
    public static void main(String[] args) {
        SwapTest a = new SwapTest(1);
        SwapTest b = new SwapTest(2);
        System.out.println(a.value + " " + b.value);
        swap(a, b);
        System.out.println(a.value + " " + b.value);
    }
}

 

์ถœ์ฒ˜ : https://codingplus.tistory.com/29

https://devlog-wjdrbs96.tistory.com/44