비이
22
2020-05-23 02:26:52
2
166

[자바] static 메소드가 주는 변화를 모르겠습니다.



public class Result02 {
	static int objCnt;
	int cnt = 6;
		
	public static void main(String[] args) {

		Result02 r1 = new Result02();
		r1.objCnt = 5;
		r1.cnt = 7;		

		Result02 r2 = new Result02();
		r2.objCnt = 10;
		r2.cnt = 9;		
		
		System.out.printf("%d %d %d %n", r1.objCnt, r2.objCnt, Result02.objCnt);
		System.out.printf("%d %d %n", r1.cnt, r2.cnt);
	}
}


올해 학부 입학한 새내기라서 굉장히 초보적인 질문일 것 같습니다.

배운 거 가지고 온갖 검색을 다해봐도 점점 더 이해가 안 가서 정말 모르겠습니다.


결과값은 

10 10 10 

7 9 


인데요 

1) 어째서 첫째줄 r1.objCnt가 가르키는 결과가

5 가 아닌 것인가요? 단순히 static 메소드가 붙은 결과인 것 같은데 맞나요? 


2)Result02.objCnt라는 게 어떤 과정을 거쳐서 값이 선언되는지 모르겠습니다.

r1.objCnt 나 r1.cnt같은 게 값이 선언되는 과정은 배워서 알겠는데... 


부끄럽습니다만 도움 주시면 감사하겠습니다.

0
0
  • 답변 2

  • 시닙이
    850
    2020-05-23 02:34:59 작성 2020-05-23 02:35:16 수정됨

    1) static 을 붙여서 Result02 클래스에서 객체로 생성해도 메모리에 올라가있기 때문에 객체에서 공유합니다. ( 객체로 생성될때 만들어졌다고는 보기 힘듭니다) 


    2) static 으로 생성되면 프로그램이 시작할때부터 종료되기 전까지 메모리에 올라가있게 됩니다. 따라서 class.static변수 로 접근이 가능한것입니다.


    질문못하고 끙끙하는것보다 이렇게 질문올리시는게 더 보기좋습니다 ㅎㅎ 안부끄러워요

    0
  • 비이
    22
    2020-05-23 03:27:27
    객체를 이번주에 배웠는데 많이 어렵네요 ㅜㅜㅜㅜ 답변 감사합니다!!
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.