My footsteps
code 실습 / 1️⃣6️⃣ 본문
728x90
✏️ HeapStack냥이
HeapStack냥이 실습동안 컴퓨터, 노트북 만지기 금지
힙스택냥이는 나이를 알 수 없는 신비로운 고양이입니다.
다음 코드를 보고 모든 ? 를 예측하고 설명해보세요. 그림도 그려주세요 제발🙀
public static int happyNewYear(int age) {
//int형으로 반환하는 happyNewYear매서드를 만들고 매개변수는 int age이다
return age + 1;
//반환시, age에 1을 더해준다
}
}
class Cat {
int age;
}
public class HeapStackCat {
public static void main(String[] args) {
Cat tory = new Cat();
//Cat형식(class Cat)인 tory의 객체를 생성해준다
tory.age = 1;
//객체를 생성해줬으니 값 할당도 가능하다. tory객체의 age에 1을 할당해준다
int toryAge = tory.age;
//tory.age=1인데 이걸 그대로 int형의 toryAge에게 대입시켜준다
System.out.println("no 1");
happyNewYear(toryAge);
//대입연산자(=)가 없어서 이 구문은 애초에 혼자 연산되고 하다가 사라진다 개무시해도됨
System.out.println("toryAge : " + toryAge);
//윗구문이 의미없는거라서 값에도 역시 변함이 없다. toryAge:1
System.out.println("tory age : " + tory.age);
//tory.age:1
System.out.println("no 2");
toryAge = happyNewYear(toryAge);
//일단 대입 연산자가 있어서 정상적인 구문이다. 우선,happyNewYear(toryAge)에서 toryAge은 1이고 happyNewYear함수가 작동되면서
//+1이되어 happyNewYear(toryAge)=2가 된다. 2를 toryAge 에 대입하니까 결과는,
System.out.println("toryAge : " + toryAge);
//toryAge:2
System.out.println("tory age : " + tory.age);
//얘는 그냥 객체가 값을 갖고 있는 거라서 값에 변함이 없다 toryAge:1
System.out.println("no 3");
tory.age = happyNewYear(toryAge);
//아까처럼 happyNewYear(toryAge)에서 toryAge가2인 상태인데 happyNewYear를 만나 +1이되어 3이 되고
//그 3을 tory.age에 넣어준다. 그런데 아까 tory.age는 1을 갖고 있던 상태였는데 이 과정에서 1이 밀려나고 3이 들어오게 된다.
//예를들어, 대입연산자에서 (윗줄)int i = 1; (밑에줄)i=2; 이라 했을때 i의 값은 2가 출력이 된다. 최종적으로 뒤에있거나 나중에 들어온게 그 값이 되기 때문에
//tory.age도 역시 1이 아닌 3을 갖게 된다
System.out.println("toryAge : " + toryAge); // ?
//그런데!!!!여기서 toryAge가 3이냐고 하면 toryAge자체는 2인 상태고 happyNewYear만나야만 3이 되는 것이다.
//그래서 toryAge자체를 출력하게 되면 2가 나오게 되는 것이다 toryAge:2
System.out.println("tory age : " + tory.age); // ?
//tory.age:3
}
728x90
'국비수업 > CODE' 카테고리의 다른 글
code 실습 / 1️⃣8️⃣ (0) | 2023.03.13 |
---|---|
code 실습 / 1️⃣7️⃣ (0) | 2023.03.10 |
code 실습 / 1️⃣5️⃣ (0) | 2023.03.08 |
code 실습 / 1️⃣4️⃣ (0) | 2023.03.07 |
code 실습 / 1️⃣3️⃣ (0) | 2023.03.06 |