4. 변수 - 데이터형과 형 변환 (Variable-Data Type & Casting)
4. 변수 - 데이터형과 형 변환 (Variable-Data Type & Casting) 본문
이번 강의에서 배우고자 하는 목표:
1. 변수 선언 방법
2. 기본형 데이터와 참조형 데이터의 차이
3. 기본 데이터형의 종류와 각각 저장할 수 있는 값의 차이
4. 형 변환의 목표
5. 내부적 형 변환과 강제 형 변환의 차이
변수란 값을 저장할 수 있는 메모리상의 공간을 의미합니다. 이 공간에는 하나의 값만을 저장할 수 있지만 저장되어 있는 값을 바꿀 수 있습니다.
변수를 선언하는 방법과 변수에 데이터를 저장하는 방법은 이와 같습니다:
int x; x =1;
int는 기본 데이터형 중 정수형 데이터형이고, x는 선언된 변수의 식별자 즉 변수의 이름입니다.
x = 1; 에서 x라는 변수에 1이라는 값을 저장하였습니다.
여기서
int x = 1;
을 작성해도 같은 결과가 나옵니다.
여러 개의 변수를 동시에 선언하려면
int x = 0, y = 0;
과 같이 작성을 해도 되며, 한 번에 선언할 수 있는 변수의 갯수에 제한은 없습니다.
변수의 데이터형은 두가지가 있는 데, 첫번째는 기본형-Primitive Type, 그리고 두번째는 참조형-Reference Type이 있습니다.
기본형에는 실제로 사용할 값이 저장되고
참조형에는 실제로 사용할 값이 저장되 있는 메모리 내의 주소가 저장됩니다.
기본형 데이터는 크게 4가지로 분류되며 총 8가지입니다. 논리형으로 분류되는 boolean, 문자형으로 분류되는 char, 정수형으로 분류되는 byte, short, int, long, 그리고 실수형으로 분류되는 float, double이 있습니다.
데이터 형 |
저장할 수 있는 값 |
용량 (bit) |
용량 (byte) |
boolean |
true / false |
8 |
1 |
char |
하나의 알파벳 |
16 |
2 |
byte |
8bit 정수 |
8 |
1 |
short |
16bit 정수 |
16 |
2 |
int |
32bit 정수 |
32 |
4 |
long |
64bit 정수 |
64 |
8 |
float |
32bit 부동소수점 실수 |
32 |
4 |
double |
64bit 부동소수점 실수 |
64 |
8 |
참조형 데이터는 클래스형 (class), 인터페이스형 (interface), 배열형 (array)와 같이 기본형이 아닌 모든 것이 속합니다.
참조형 데이터를 선언할 때에는 기본형 데이터형 대신 클래스명 (혹은 인터페이스명이나 배열명)을 써주면 됩니다.
ex:
Name person = new Name ( );
여기서 new 연산자가 객체를 생성하였고 Name이란 클래스형 데이터 person에는 새로 만든 객체의 주소가 저장됩니다.
형 변환 (casting)은 데이터형을 바꿀 때 사용합니다. 기본형과 참조형 둘 다 형 변환이 가능하지만, 기본형은 기본형으로만, 참조형은 참조형으로만 변환 가능합니다.
형 변환에는 중요한 규칙이 있는 데, 이는 형 변환은 한 쪽 방향으로만 가능하다는 것입니다.
byte –> short, char –> int –> long –> float –> double
방향으로만 가능하며, 반대방향으로 형 변환을 시도하면 overflow가 발생합니다.
내부적 형 변환은 저 위에 방향으로, 즉 값의 표현 범위가 더 큰 방향으로, 형을 변환할 경우 값의 손실이 없으니 프로그래머의 의도와 관계없이 자동으로 변환되는 걸 의미합니다. 즉 괄호를 생략해도 괜찮습니다.
강제 형 변환은 그 반대 방향으로 변환해야 할 경우 직접 유형을 선언해야 하는 형 변환 방식을 뜻 합니다.
형 변환은 변환하고 싶은 변수 앞에 새로운 데이터형을 괄호와 함께 쓰면 됩니다.
ex:
int number = (int) 71.1; byte byte = (byte) number;