본문 바로가기

Java

메서드 (call by value passing, call by reference passing)

 static함수에서 heap변수를 사용할 수 없다.

값이 아닌 포인터이기 때문에 heap 의 영향 그대로 받음.

지역변수

package ch03;

class Data {
	int num = 10;

}

public class MethodEx02 {

	static int 증가(int num) {
		num++;
		System.out.println("증가 num : " + num);
		return num;
	}

	static void 감소(Data d) {
		d.num--;
		System.out.println("감소num : " + d.num);
	}

	public static void main(String[] args) {
		// call by value passing
		int myNum = 100;
		myNum = 증가(myNum);
		System.out.println("myNum : "+ myNum);

		// call by reference passing
		Data data = new Data();
		감소(data);
		System.out.println("data.num : "+data.num);
	}

}

 

 

 

값이 아닌 포인터이기 때문에 heap 의 영향 그대로 받음.

- value passing 의 값을 유지하고 싶을 때에는 return 하여 값을 반환해줘야 함.