다루두루

블로그 이미지

차케요

공부하면서 정리하는 노트같은 블로그입니다.

지역변수와 전역변수의 초기화 initialized 이야기

[JAVA]자바 공부하기 2015. 12. 11. 14:56

이번 글에서는 자바 변수의 초기화에 대해서 기본 개념을 정리해볼까 합니다. 자바에서는 변수를 선언하면 종류에 따라서 메모리의 두 곳에 할당되는데 전역변수(이하 멤버)는 Garbage Collection Heap이라는 곳에 위치하며 지역변수(이하 지역)는 Runntime Stack에 할당됩니다.

 

이것들이 메모리의 어디에 할당되느냐에 딸라서 달라지는 건 스스로 초기화가 되는지 여부인데 Runntime Stack에 자리르 잡는 지역은 자동으로 초기화가 이루어지지 않습니다. 그렇기 때문에 반드시 따로 진행을 해줘야 하는데요. 다른 말로 메서드 내에 있는 것은 무조건 초기화를 해줘야 한다는 의미입니다.

 

예를 들어 다음과 같은 코드가 있을 때....

 

public class Test {
	public static void main(String[]ar){
		int a;
		System.out.println("a의 값은:"+a);
		
	}
}

 

a는 main() 메소드 안에 선언되어 있으며 따로 초기화를 거치지 않고 값의 출력을 시도하고 있습니다. 이 소스로 컴파일을 시도하면 다음과 같은 에러가 발생합니다.

 

에러내용

 

대충 내용을 보면 a가 초기화(initialized ) 되지 않았다는 내용입니다. 그럼 예제에서 최초의 값을 대입해서 초기화를 해주겠습니다.

 

지역

 

언제 그랬냐는 듯 제대로 컴파일이 진행되고 프로그램도 실행됩니다. 이렇게 지역 반드시 초기화를 해줘야 하다는거 확인했구요. 다음은 멤버의 경우를 확인해보겠습니다.

 

 

public class Test {
	int a;
	public static void main(String[]ar){
		Test tx=new Test();
		System.out.println("a의 값은:"+tx.a);
		
	}
}

 

이번에는 a를 메소드 내부가 아닌 밖에 선언한 멤버의 형태입니다. 예제에서는 Test 클래스의 객체를 만들어서 a에 접근하고 있는데 객체 생성 관련 내용은 해당 단락에서 정리하기로 하구요. 여기서는 Garbage Collection Heap에 자리를 잡으면서 스스로 '0'으로 초기화 된다는 점만 확인하고 넘어갈게요.

 

멤버

 

이렇게 자바에서 사용하는 변수 중 메소드 내부에 있는 지역과 밖에 있는 멤버는 스스로 초기화 되는게 다르기 때문에 메소드 안에 선언할 때는 반드시 초기화를 해줘야 한다는 걸 기억하면서 마무리하겠습니다. 수고하셨어요.

 

저작자표시 비영리 변경금지 (새창열림)
Posted by 차케요

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

카테고리

NEW (900)
아이폰 개발 기초 (7)
취미 (16)
아두이노 (16)
[안드로이드] 어플만들기 (77)
안드로이드 기초 다지기 (61)
슈팅게임 만들기 (4)
[JAVA]자바 공부하기 (48)
C언어 알고리즘 (61)
[Unity3D]유니티3D 강좌 (7)
컴퓨터 (325)
포토샵CS2 강좌 (6)
유용한 프로그램 (244)
리눅스 노트정리 (22)
임베디드 리눅스 (11)
New블로그 (9)
음식의 효능 (4)
일반상식 (56)
HTML 공부 (40)
포토샵 공부 (36)
엑셀 (6)
파워포인트 공부 (19)
노트정리 (38)
일상 (33)
TV영화 (85)
방명록 : 관리자 : 글쓰기
차케요's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

다루두루

공부하면서 정리하는 노트같은 블로그입니다.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • NEW (900)
    • 아이폰 개발 기초 (7)
    • 취미 (16)
      • 아두이노 (16)
    • [안드로이드] 어플만들기 (77)
      • 안드로이드 기초 다지기 (61)
      • 슈팅게임 만들기 (4)
    • [JAVA]자바 공부하기 (48)
    • C언어 알고리즘 (61)
    • [Unity3D]유니티3D 강좌 (7)
    • 컴퓨터 (325)
      • 포토샵CS2 강좌 (6)
      • 유용한 프로그램 (244)
    • 리눅스 노트정리 (22)
      • 임베디드 리눅스 (11)
    • New블로그 (9)
    • 음식의 효능 (4)
    • 일반상식 (56)
    • HTML 공부 (40)
    • 포토샵 공부 (36)
    • 엑셀 (6)
    • 파워포인트 공부 (19)
    • 노트정리 (38)
    • 일상 (33)
    • TV영화 (85)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바