인프런 커뮤니티 질문&답변

박정훈님의 프로필 이미지

작성한 질문수

윤재성의 Java 기반 Android 9.0(pie) App 개발 고급 3단계

33강 데이터 베이스에 저장하기

전역변수를 클레스 매서드에서 사용할때.

해결된 질문

20.01.29 16:27 작성

·

194

0

안녕하세요

전역변수를 동일한 클레스의 매서드에서 사용할때 질문 입니다.

동일한 클레스 안에 매서드들이 똑같은 전역변수를 돌려가면서 사용할때

다른 매서드에서 그 변수에 넣은 값을 변경않는 한 다른 매서드에서 호출할때 그 값을 그대로 사용 하는것인지 궁금합니다.  처음에는 그런줄만 알았는데요.

어떨때는 전역변수에 있는 값이 

다른 매서드에서 저장한데로 들어가 있다가

갑자기 에러가 떠서 확인해 보면 그 값이 없어지고 null 값이 들어가 있고 그럽니다.  그래서..

이것을 해결하기 위해서 초기화 생성자를 다 지우기도 하고..

그냥 전역변수 선언하는 부분에서 변수에 값을 아예 넣어보기도 하고,

매서드마다 파라미터에 전역변수값을 넣어주기도 하고.

그래서 전역변수 변수의 이름만 똑같이 가져와서 매서드 마다 값을(다 같은 값이지만)일일히 넣어 주기도 했는데요.

근본적인 해결방법이 아닌것 같아서 질문 드립니다.

전역변수를 한 매서드에서 입력한 값대로 계속 사용하고 싶습니다.  그리고 그 값이 지워지지 않고 쭉 유지가 됬으면 좋겠는데요.  ㅠㅠ  선생님이 올려 놓으신 관련 자바 강의도 몇번 들으면서 이해 해 보려 했지만 좀 힘드네요 도와주세요.

답변 2

0

박정훈님의 프로필 이미지
박정훈
질문자

2020. 01. 30. 09:57

감사합니다.!

0

nury님의 프로필 이미지
nury
지식공유자

2020. 01. 30. 09:56

자바에는 전역변수의 개념이 없습니다. 클래스의 맴버 변수와 지역변수로 분류됩니다. 클래스의 맴버 변수는 객체를 생성하게 되면 객체마다 따로 가지고 있게 됩니다. 같은 클래스에 작성한 메서드라고 하더라도 객체가 다르면 서로 다른 변수로 취급됩니다. 만약 생성된 모든 객체가 모두 같은 변수를 사용하겠다면 static으로 정의하셔야 합니다.