My footsteps

code 실습 / 1️⃣6️⃣ 본문

국비수업/CODE

code 실습 / 1️⃣6️⃣

밀김 2023. 3. 9. 14:34
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