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 하여 값을 반환해줘야 함.
'Java' 카테고리의 다른 글
.equals() - String (0) | 2020.03.23 |
---|---|
반복문 (for expression, while) (0) | 2020.03.23 |
파일명 바꾸기 // how to rename a file(.java) (0) | 2020.03.20 |
자바 - 식별자, 연산자, 조건문, 함수(method) // Operator, Identifier, if, method (0) | 2020.03.20 |
Object /call by value/reference/ (0) | 2020.03.17 |