변수를 선언할 때 자료형 을 명시해주는 이유는 다음과 같습니다.
1. ‘정수’와 ‘정수가 아닌 실수’를 표현하는 방식 자체가 다르기 때문에 컴파일러에게 미리 알려줘야한다.
2. 데이터를 저장할 메모리공간의 크기를 컴파일러에게 알려주어야한다.
1. 정수 자료형 : 숫자 표현
Java에는 아래와 같은 자료형이 있습니다.
자료형 | 메모리 | 표현할 수 있는 숫자의 범위 | |
정수 | byte | 1byte | -128 ~ +127 |
short | 2byte | -32,768 ~ +32,767 | |
int | 4byte | -2,147,483,648 ~ +2,147,483,647 | |
long | 8byte | -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807 | |
문자 | char | 2byte | 문자 |
실수 | float | 4byte | ±3.4×10^-37 ~ ±3.4×10^+38 |
double | 8byte | ±1.7×10^-307 ~ ±1.7×10^+308 |
사실 우리는 정수형 변수를 선언할 때 보통 int보다 작은 자료형은 잘 쓰지 않습니다. byte나 short, int 중 무엇을 쓰던지 사실 CPU의 처리속도는 차이가 거의 나지 않기 때문입니다. 그렇다면 굳이 int보다 작은 자료형을 쓸 필요가 없죠. 메모리 공간까지 신경써야 할 상황이 아니라면 말이죠.
정수 자료형을 사용하여 표현할 수 있는 숫자의 범위는 그 자료형의 크기가 나타낼 수 있는 경우의 수와 같습니다. 가령 short는 2byte = 16bit이기 때문에 2^16 = 65,536의 경우의 수를 나타낼 수 있어요. 단, 가장 앞에 오는 최상위 비트(MSB)는 부호를 표현하는데 사용이 됩니다. 따라서 실제로 데이터의 크기를 표현하는데에는 15bit만 사용이 되어 2^15 = 32,768 가지의 상태를 나타낼 수 있어요. 가장 앞의 bit가 0이면 양수, 1이면 음수를 나타냅니다.
자바에서는 정수를 기본적으로 int로 처리하므로 int의 범위를 넘어서는 숫자는 long으로 쓰더라도 long num = 12345678900L;와 같이 뒤에 L이나 l을 써주어야 합니다.
또한 실수는 기본적으로 double로 처리되므로 float을 쓸 때도 float num = 3.14f;와 같이 뒤에 F나 f를 붙여주어야 합니다.
2. 문자 자료형
char는 문자(character)를 나타내는 데 사용됩니다. 문자가 표현되는 원리를 알려면 ASCII(American Standard Code for Information Interchange)에 에 대해 알아야합니다. 아스키 코드는 미국표준협회(ANSI)에서 만든 표준 코드체계입니다. 아스키 코드에서는 문자를 표현하기 위해서 우리는 문자 하나 하나를 어떠한 정수에 대입시키기로 약속을 하였습니다.
![image](https://nobbaggu.github.io/images/2018/09/ASCII.jpg" sizes="(max-width: 1306px) 100vw, 1306px" srcset="/images/2018/09/ASCII.jpg 1306w, /images/2018/09/ASCII-300x167.jpg 300w, /images/2018/09/ASCII-768x429.jpg 768w, /images/2018/09/ASCII-1024x572.jpg 1024w)
package hello;
public class HelloJava{
public static void main(String[] args){
char char1 = 'A';
char char2 = 'Z';
System.out.println(char1);
System.out.println(char2);
}
}
실행결과
A
Z
'프로그래밍 언어 > Java' 카테고리의 다른 글
(Java) 5 - 자료형(3) - 형 변환 (0) | 2020.05.17 |
---|---|
(Java) 4 - 자료형(2) - 상수와 리터럴 (0) | 2020.05.17 |
(Java) 2 - 변수와 자료형 (0) | 2020.05.17 |
(Java) 1 - Java의 특징 (0) | 2020.05.17 |
(Java) 0 - 프로그래밍 언어란 (0) | 2020.05.17 |