Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/JAVA

[JAVA] Java์˜ ์ธ์ž ์ „๋‹ฌ , ํฌ์ธํ„ฐ ? - call by value, call by reference

by soonybutter 2024. 9. 29.
728x90

 

โ€ป JAVA์˜ ์ธ์ž ์ „๋‹ฌ

- ์ž๋ฐ”์—์„œ ์ง€์›ํ•˜๋Š” ํƒ€์ž…์—๋Š” primitive type๊ณผ reference type์ด ์žˆ๋‹ค.

- primitive type : byte, char, short, int, long, float, double, boolean ๋“ฑ๊ณผ ๊ฐ™์€ ์ž๋ฐ” ๊ธฐ๋ณธ ํƒ€์ž…

- reference type : java.lang.object๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ชจ๋“  ๊ฐ์ฒด

 

1. primitive type์ด ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ

 

public class test1 {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		System.out.println("a = "+a);
		add(a);
		System.out.println("a = "+a);
	}
	static void add(int x) { // a์˜ ๊ฐ’์„ 1์ฆ๊ฐ€ ์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜
		x++;
	}

}

 

a = 10 a = 10

๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์•„ Call By Value์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

2. ๊ฐ์ฒด ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ

 

class Point{
	int x;
	Point(int x){
		this.x = x;
	}
}
public class test2 {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Point p = new Point(10);
		System.out.println("a = "+p.x);
		add(p);
		System.out.println("a = "+p.x);
	}
	static void add(Point a) { // a.x ๊ฐ’์„ 1 ์ฆ๊ฐ€ ์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜
		a.x++;
	}

}

 

a = 10 a = 11
 

๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณด์•„ Call By Reference์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋ฐฐ์—ด์ด ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒฝ์šฐ

public class test2 {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[] = {10, 20};
		System.out.println("x = "+a[0]+", y = "+a[1]);
		swap(a);
		System.out.println("x = "+a[0]+", y = "+a[1]);
		
		
	}
	static void swap(int x[]) { // x[0]์™€ x[y] ๊ฐ’์„ ๊ตํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
		int temp = x[0];
		x[0] = x[1];
		x[1] = temp;
	}

}

 

x = 10, y = 20 x = 20, y = 10

๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณด์•„ Call By Reference์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

[์ •๋ฆฌ] primitive type์€ Call By Value, reference type์€ Call By Value

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ