일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 컴퓨터구조
- 의사난수
- JAVA프로그래밍
- 난수
- 자바
- 1의보수
- 2진법음수표현
- 멤버메소드
- 부호절댓값
- 자바프로그래밍
- 멤버변수의초기화
- 객체지향
- new연산자
- 객체지향언어
- random클래스
- 클래스
- random()
- 지역변수
- 변수의초기화
- Math.random()
- 난수발생
- 2의보수
- 2진법음수
- java
- 전역변수
- static
- 클래스멤버
- 2진법의음수표현
- 멤버필드
- 멤버변수
- Today
- Total
주인장의 프로그래밍 개발 공부방
[Chapter 1 변수] 5. 변수의 기본 값과 초기화 본문
지난 시간까지 변수가 무엇인지와 변수타입의 종류, 변수를 선언하는 방법 등을 알아봤다.
이번에는 변수의 기본 값과 초기화를 하는 방법에 대해서 알아보자.
목표 : 변수 각 타입의 기본 값이 무엇인지 알고 변수를 초기화하는 방법을 이해한다.
1. 변수의 기본 값
변수의 각 타입들은 각자의 기본 값을 가지고 있다.
이 기본 값은 해당 타입에 맞는 형태로 empty 형태의 값을 가지게 되는데
일반적으로 정수형과 실수형은 0을 기본 값으로 가지고
문자형은 공백을 기본 값으로 가진다.
논리형인 boolean은 false(거짓)을 기본 값으로 가지게 되는데
이는 0과 1로만 이루어진 컴퓨터 구조에서 0은 false, 1은 true라는 논리 값을 가지게 되기 때문이다.
따라서 boolean은 숫자형과 같이 0이 기본 값이지만 논리 값으로는 false이기 때문에
기본 값을 false로 가지게 된다.
각 변수 타입별로 기본 값을 보자면
문자형
char : ' ' (공백)
정수형
byte : 0
short : 0
int : 0
long : 0L
(접미사 L을 붙여 long 타입이라고 표시한다. 하지만 굳이 L을 붙이지 않아도 0L로 자동으로 변환된다.)
실수형
(실수형은 굳이 0.0이 아닌 0으로 값을 저장해도 자동으로 0.0으로 변환된다.)
float : 0.0f
(이 역시 long 타입과 동일하다.)
double : 0.0
(접미사 d를 붙여도 되고 붙이지 않아도 된다. 실수형의 기본 타입이니까)
논리형
boolean : false
의 기본 값을 가지게 된다.
2. 변수의 초기화
우리가 코드를 작성할 때 변수를 선언하게 되는데
이 때 변수를 초기화를 하는 작업을 하게 된다.
초기화라는 말은 대단한 것이 아니고
선언한 변수에 값을 저장하는 것을 말한다.
다시 말해,
int i = 10;
이라는 변수 선언 코드가 있다면
여기서는 변수 i를 리터럴인 10으로 초기화했다는 말이 된다.
변수의 초기화는 위의 코드와 같이 사용자가 사용하려는 값을 바로 넣을 수도 있지만
일반적으로는 앞서 설명한 변수의 기본 값을 처음에 선언하면서 초기화를 한다.
간단한 이유를 덧붙이자면
변수는 하나의 값을 저장하는 저장공간인데
변수의 값은 사용자가 원한다면 언제든지 변경할 수 있는 녀석이다.
따라서 변수 선언과 동시에 int i = 10; 처럼 값을 넣어도 되지만
만약 프로그램이 계속 실행되면서 i의 값이 계속 변하는 것이라면
코드가 시작하는 줄에 int i = 0;으로 선언을 해놓고 시작하는 것이 일반적이라는 것이다.
(물론 final 예약어를 사용해 선언한 상수는 해당하지 않는다.)
물론 이 방법이 맞고 틀리다는 것은 아니다.
두 방법 모두 맞는 방법이고 많이 쓰는 방법이기 때문에
어느 방법을 사용하든 사용자 마음대로 사용해도 된다.
3. (심화)변수의 초기화
앞에서 변수의 초기화가 무엇인지, 그리고 변수를 초기화하는 방법에 대해서도 알아봤다.
이번에는 주의해야할 점에 대해서 알아보려고 한다.
변수는 프로그램 안에서 어디에서 선언이 되느냐에 따라서 두 가지로 분류가 된다.
아직까지 프로그램의 구조에 대해서 알아보진 않았지만
Java에서는 큰 틀을 형성하고 있는 클래스(Class) 영역과
클래스(Class) 영역 안에서 함수, 즉, 기능을 담당하는 메서드(Method) 영역으로 나눌 수가 있다.
여기에서 클래스 영역에 선언된 변수를 전역 변수(Global Variable)라고 하고
메서드 영역에 선언된 변수를 지역 변수(Local Variable)라고 한다.
어느 영역에서 선언되었느냐에 따라서 전역 변수, 지역 변수로 분류할 수 있는데
전역 변수는 말 그대로 프로그램 어디에서든 사용할 수 있는 변수이고
지역 변수는 선언된 해당 메서드 안에서만 사용할 수 있는 변수라고 할 수 있다.
그런데 여기에서 알아야하는 것이 있다.
바로 초기화의 문제이다.
일반적으로 우리들은 변수를 선언하면서 초기화를 같이 하게 된다.
다시 말해
int i = 10;
과 같이 기본적으로 초기화라는 것을 자연스럽게 하게 되는데
int i;
와 같이 값을 넣지 않고도 변수를 선언할 수 있다는 것이다.
이 선언은 초기화를 하지 않은 변수 선언이 되는데
문제는 이러한 방식은 메서드 영역에서는 절대 불가하고
클래스 영역에서만 가능하다는 점이다.
물론 클래스 영역에서도 변수를 선언할 때 초기화를 해주는 것이 좋지만
하지 않아도 프로그램이 자동으로 알아서 기본 값을 저장해준다.
반대로 메서드 영역에서 초기화를 하지 않고
int i;
라고만 선언을 하고 변수 i를 사용하게 되면 초기화를 하지 않았으니
변수 초기화 좀 하라고 에러를 띄우게 된다.
따라서 이러한 부분을 잘 파악하고 해당 영역에서 오류가 발생하지 않도록 하는 것이 중요하다.
4. 마무리
여기까지 변수의 타입별 기본 값과 변수의 초기화에 대해서 알아봤다.
사실 그렇게 어려운 내용은 아니라고 생각한다.
오히려 별 생각하지 않고 항상 해왔던 것이기 때문에 이해하는데 더 빨랐을 것이라고 생각한다.
다만 주의해야할 점은 클래스 영역에서는 굳이 초기화를 하지 않아도 되지만
메서드 영역에서는 무슨 일이 있어도 초기화를 해줘야 한다는 건 꼭 기억하고 있자.
'프로그래밍 기본 지식 > Chapter 1 변수' 카테고리의 다른 글
[Chapter 1 변수] 7. 참조형 변수(Reference Variable)의 기본개념 (9) | 2019.05.11 |
---|---|
[Chapter 1 변수] 6. 형변환(Type Casting) (1) | 2019.05.11 |
[Chapter 1 변수] 4. 변수, 상수, 리터럴?? (1) | 2019.05.10 |
[Chapter 1 변수] 3. 변수 선언 방법 (1) | 2019.05.10 |
[Chapter 1 변수] 2. 변수의 타입(Type)에 대해서 알아보자. (2) | 2019.05.10 |