목차
데이터형이란
우리가 밥을 먹을 때 국그릇, 밥그릇, 접시 등이 있듯이 프로그래밍에서도 변수마다의 접시가 다양하다.
예를 들어 정수, 실수, 문자, 불형(Boolean), 문자열이 있다.
public class Study {
public static void main(String[] args) {
int var1 = 100;
double var2 = 3.14;
char var3 = '자';
boolean var4 = true;
String var5 = "Hello!"
}
}
데이터형의 종류
정수 데이터형
자바를 사용하 보면 정수형을 사용할 때는 그 정수형의 크기를 고려해야 한다. 예를 들어 사람들의 나이를 입력해야 한다면 0 ~ 120세로 설정하면 되고 회원가입을 받을 때 출생연도는 1900 ~2100년과 같이 설정하면 된다. 이렇게 정수형은 상황에 따라 값의 범위가 다른데 굳이 나누는 이유는 컴퓨터의 자원은 한정적이다. 이러한 한정적인 공간에서 자원의 효율적인 사용이 필수적이다.
밑에 표를 먼저보자.
정수형 | 크기 | 값의 범위 |
byte | 1바이트 | -128 ~ 127 |
short | 2바이트 | -32,768 ~ 32,767 |
int | 4바이트 | -2,147,483,648 ~ 2,147,483,647 |
long | 8바이트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
그러면 사람의 나이를 저장할 변수의 경우 0 ~ 120세를 기준으로 하면 byte형의 변수를 선언하면 되는 것이고 출생 연도의 경우 short를 사용하면 되는 것이다. 밑에 코드를 위에 코드를 보며 비교해 보자.
public class Study {
public static void main(String[] args) {
byte age = 127; # 최대 저장 가능한 값의 크기가 127
short birth = 32767; # 최대 저장 가능한 값의 크기가 32767
int money = 2147483647; # 최대 저장 가능한 값의 크기가 2147483647
System.out.println(age);
System.out.println((byte)age + 1); # 최대 저장 가능한 숫자를 초과하였을 경우
System.out.println(birth);
System.out.println((short)birth + 1); # 최대 저장 가능한 숫자를 초과하였을 경우
System.out.println(money);
System.out.println((int)money + 1); # 최대 저장 가능한 숫자를 초과하였을 경우
}
}
------
출력 결과
127
128
32767
32768
2147483647
-2147483648
실수 데이터형
실수형은 우리가 흔히 사용하는 3.14와 같은 소수점이 있는 숫자를 말하는데 자바에서는 소수점과 같은 실수형이 2개가 있으며 이 두 개 중
기본으로 사용하는 형은 double이다. 따라서 3.14, 1.1111과 같이 어떤 실수를 입력하더라고 double형 값으로 인식하지만 float형으로 인식시키기 위해서는 float를 의미하는 'f'를 숫자 뒤에 붙인다.
실수형 | 크기 | 값의 범위 | 유효 자릿수 (소수점 이하) |
flaot | 4바이트 | ±1.4E-45 ~ ±3.4028235E38 | 약 7자리 |
double | 8바이트 | ±4.9E-324 ~ ±1.7976931348623157E308 |
약 15자리 |
float와 double형 둘다 보기에 매우 큰 범위를 가지지만 이 둘을 구분하여 사용하는 경우는 수학과 같이 정밀한 계산이 필요할 때 구분해서 사용한다. 예를 들어 항공기, 우주선과 같이 말이다.
public class Study {
public static void main(String[] args) {
float f = 0.1234567890123456789f;
double d = 0.1234567890123456789;
System.out.println(f);
System.out.println(d);
}
}
------
출력 결과
0.12345679
0.12345678901234568
문자 데이터형
하나의 글자를 저장할 수 있는 문자형은 작은 따옴표('')로 묶어서 대입한다.
문자형 | 크기 | 값의 범위 |
char | 2바이트 | 영어 또는 한글 |
public class Study {
public static void main(String[] args) {
char ch = 65;
char ch2 = 'A';
char ch3 = 44032;
char ch4 = '가';
System.out.println(ch);
System.out.println(ch2);
System.out.println(ch3);
System.out.println((int)ch4);
}
}
------
A
A
가
44032
위의 코드를 보면 분명히 하나의 문자만 저장이 가능하다고 했는 숫자가 들어가 있다. 그 이유는 각 문자마다 고유의 번호가 있는데 대문자 A의 경우 정수로 65번이기 때문이다. 아스키 코드를 참조하자.
https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C
불 데이터형
불형은 논리형이라고도 부루며 참 또는 거짓만 저장이 가능하다.
불형 | 크기 | 값의 범위 |
boolean | 1바이트 | true 또는 false |
public class Study {
public static void main(String[] args) {
boolean bool1, bool2;
bool1 = true;
System.out.println(bool1);
bool2 = ( 100 < 10 );
System.out.println(bool2);
}
}
------
출력 결과
true
false
문자열 클래스
문자열 클래스 | 크기 | 값의 범위 |
String | (입력된 문자 수 X 2 )바이트 | 문자열의 길이에 제한은 없다. 다만 JVM이나 힙 메모리 크기에 의존한다. |
public class Study {
public static void main(String[] args) {
String a = "Hello World!";
System.out.println(a);
}
}
--------
출력 결과
Hello World!