JAVA의 정석 기초편 연습문제 6-16

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Exercise6_16 {
 
    public static void change(String str) {
        str += "456";
    }
    
 
    public static void main(String[] args) {
        
        String str = "ABC123";
        System.out.println(str);
        
        change(str); // 메서드 실행-종료 후 메모리에서 지워짐.
        System.out.println(str); // 실행결과 : ABC123
 
        System.out.println(change(str)); // change메서드에서 실행 된 값을 호출하여 출력 : ABC123456
    }
}
cs

 

 

실행순서

1. main메서드 안에서 String str = "ABC123"; 생성.

2. change메서드 매개변수로 메인메서드의 str이 넘어감.

3. change메서드 구현부에서 str = "ABC123456" 으로 새로 생성 되고 주소값 변경 됨.

4. change메서드 종료 후, 메서드에서 작업하던 내용들이 메모리에서 제거 됨.

5. main메서드에서 실행된 sysout(str)에서는 main안의 기존 변수였던 str의 주소값 ABC123이 출력 됨.

 

change 메서드가 사라지기 전에 출력하고 싶으면! sysout(change(str)); 로 작성한다.

sysout메서드가 change메서드를 호출하면서 change는 대기상태가 되고, sysout에서 change의 수행값을 출력한 뒤 main을 제외하고 모두 메모리에서 제거된다.