2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

자바,C언어 변수 초기화 안하면 생기는 일 ,변수 초기화 뜻

2023. 6. 29. 21:26ㆍJAVA 기초

[변수 초기화] 

 
자바에서 이런뜻을 들어본적이 있을 것 이다.
 
자바에서는 변수 선언과 동시에 초기화를 시켜주거나
 
아니면 변수를 선언한다면 초기화를 하라고 한다
 
그렇다면 초기화라는 뜻이 뭘까?
 

 
 
int num이라는 변수를 선언했다.
 
하지만 num이라는 값에 아무런 값도 할당하지 않았다.

만약 내가  int num = 5를 넣었다면 
이것의 뜻은 num 변수에 초기화와 동시에 값을 할당했다고 한다.

 
그렇다면 이런 의문이 들 것이다.
 
아니 애초에 int num; 이라는 것을 선언하면 값이 비어있는데
비어있는 변수에 값을 넣는게 왜 초기화 일까?

초기화라는것은 어떻게 본다면 어떠한 값이 있는걸 초기화 하는게 더 뜻이 맞지않을까?

 
그 이유는 간단하다.

사실 int num 안에는 값이 들어있다.



만약 개발자가 int num;을 선언했다고 하자.
 
개발자가 선언했다고 해서 num이 비어있는 값이 아니라
 
num은 어떠한 메모리에 있는 쓰레기 값이 들어있는 것 이다.
 
즉 int num;을 선언하더라도 여기 값에는 비어있는 값이 들어있는 것이 아닌
메모리에 있는 쓰레기 값이 들어있는 것 이다.
 
그렇기 때문에 변수를 선언하면 이 값안에는 쓰레기 값이 들어있기 때문에
 
값을 할당해준다면 이 값은 초기화가 되었다고 하는 것 이다.
 
자바에서는 기본적으로 초기화 되지 않은 변수를 선언한다면 IDE에서 오류를 내고
 

 
이렇게 오류를 낸다. 
 
즉 초기화가 되지 않았을 수 있다 = 이 num 값안에는 메모리에 있는 쓰레기 값이 있으니 
사용 가능한 값들을 넣어 초기화를 시켜라.

 

 

[주의 할 점]

 

[공통]

 

전역변수나 static(정적 변수)는 초기화를 시키지 않을 경우 자동으로 0이 할당됨.

 

 

[이렇게 전역 변수로 선언되거나 static 변수로 선언되는 경우 쓰레기 값이 들어가는 게 아닌

자동으로 0이 할당 됨]

 

 

 

찍어보면 둘 다 0이 나오는걸 확인 할 수 있음.

 

 

하지만 메서드안에서 선언하는 지역변수일 경우 초기화를 시켜주지 않으면 

이 값에는 연산 불가능한 쓰레기 값이 들어 있음.

 

 

 

[C언어일 경우]

 

1. 만약 타입이 int 타입이라면 초기값은 항상 상수여야만 한다.

 

2. 문자 타입일 경우도 상수를 넣어야 함 .

 

 

[자바 일 경우]

 

1.자바는 기본적으로 이러한 조건을 IDE가 자동으로 넣어준다.

 


 
 

 
C언어에서도 같은 오류를 낸다.
 
 
[정리]
 

변수 초기화 라는 것은 변수 선언을 하고 값을 넣어주지 않으면

그 변수 안에는 추정불가 한 쓰레기 값이 들어있음.

그렇기 때문에 이 쓰레기 값을 지우는 것을 초기화 라고 함.

 

또한 전역 변수나 정적 변수일 경우 초기화를 하지 않아도

자동으로 값이 0으로 할당 됨.