1. 호출 스텍(call stack)
스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓인다.
메서드 수행에 필요한 메모리가 제공되는 공간
메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
class Ex6_5 {
public static void main(String[] args) {
System.out.printlm("Hello");
}
}
2. 기본형 매개변수
기본형 매개변수 - 변수의 값을 읽기만 할 수 있다. (read only)
참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. (read & write)
기본형 매개변수 예제
class Date { int x }
class Ex6_6 {
public static void main(String[] args) {
Data d = new Date();
d.x = 10;
System.out.println("main() : x = " d.x);
change(d.x);
System.out.println("After change(d.x)");
System.out.println("main() : x = " + d.x);
}
static void change(int x) {
x = 1000;
System.out.println("change() : x = " + x);
}
}
결과 :
main() : x = 10
change() : x = 1000
After change(d.x)
main() : x = 10 -> 10인 이유 change() 메소드는 이미 호출되어 스택에서 사라진 후 이기때문에 1000이 아님
참조형 매개변수 예제
class Data2 {int x; }
class Ex6_7 {
public static void main(String[] args) {
Date2 d = new Data2();
d.x = 10;
System.out.println("main() : x = " + d.x);
change(d);
System.out.println("After change(d)");
System.out.println("main() : x " + d.x);
}
static void change(Data2 d) {
d.x = 1000;
System.out.println("change() : x = " d.x);
}
}
결과 :
main() : x = 10
change() : x = 1000
After change(d)
main() : x = 1000
참조형 반환타입
class Data3 { int x }
class Ex6_8 {
public static void main(String[] args)
Data3 d = new Data3();
d.x = 10;
Data3 d2 = copy(d);
System.out.println("d.x = " d.x);
System.out.println("d2.x = " + d2.x);
}
static Data3 copy(Data3 d) {
Data3 tmp = new Data3(); // 새로운 객체 tmp 를 생성
tmp.x = d.x; // d.x의 값을 tmp.x에 복사
return tmp; // 복사한 객체의 주소를 반환
}
}
결과
d.x = 10
d2.x = 10
'JAVA' 카테고리의 다른 글
JAVA #22 오버로딩(overloading), 생성자(constructor) (0) | 2021.07.07 |
---|---|
JAVA #21 static 메서드와 인스턴스 메서드 (0) | 2021.07.05 |
JAVA #19 메서드 호출, return 문 (0) | 2021.06.20 |
JAVA #18 객체의 생성과 사용 (0) | 2021.06.20 |
java #17 Object 클래스 총 정리 2(StringBuffer, StringBuilder ,Math 클래스, 래퍼 클래스) (0) | 2021.05.26 |