변수
Variable
변수를 정의하자면, 하나의 값(데이터)을 가질 수 있는 것.
즉, 값(Value)을 저장할 수 있는 메모리의 공간을 의미한다.
변수의 이름 생성 규칙
JAVA에서는 변수뿐만 자바에서는 변수뿐만 아니라 클래스, 메소드 등의 이름을 짓는데 반드시 지켜야 하는 공통된 규칙이 있다.
- 변수의 이름은 영문자(대소문자), 숫자, 언더스코어( _ ), 달러( $ )로만 구성할 수 있다.
- 변수의 이름은 숫자로 시작할 수 없다.
Ex) 1step (x), step1 (o) - 변수의 이름 사이에는 공백을 포함할 수 없다.
- 변수의 이름으로 JAVA에서 미리 정의된 키워드(keyword)는 사용할 수 없다.
Ex) true (x), True (o) - (변수의 이름은 해당 변수에 저장될 데이터의 의미를 잘 나타내도록 짓는 것이 좋다.)
변수의 종류
- 기본형(primitive type) 변수
- 참조형(reference type) 변수
기본형(primitive type) 변수는 실제 연산에 사용되는 변수이다.
JAVA에서는 8가지 종류의 기본형 변수를 제공하고 있다.
- 정수형 : byte, short, int, long
- 실수형 : float, double
- 문자형 : char
- 논리형 : boolean
기본 타입 (primitive type), 타입(data type)은 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 역할을 한다.
정수형 타입 - 정수(Integer)로 표현되는 숫자를 저장한다.
JAVA에서 정수란 부호를 가지고 있으며, 소수 부분이 없는 수를 의미.
Ex) ... -2, -1, 0, 1, 2, ...
정수형 타입의 종류
정수형 타입 | 할당되는 메모리의 크기 | 데이터의 표현 범위 |
byte | 1바이트 | - 128 ~ 127 |
short | 2바이트 | - 2^15 ~ (2^15-1) - 32,768 ~ 32,767 |
int | 4바이트 | - 2^31 ~ (2^31-1) - 2,147,483,648 ~ 2,147,483,647 |
long | 8바이트 | - 2^63 ~ (2^63-1) - 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
정수형 데이터의 타입을 결정할 때에는 반드시 자신이 사용하고자 하는 데이터의 최대 크기를 고려해야 한다.
해당 타입이 표현할 수 있는 범위를 벗어난 데이터를 저장하면, 오버플로우(overflow)가 발생해 전혀 다른 값이 저장될 수 있기 때문이다.
오버플로우(overflow)란 해당 타입이 표현할 수 있는 최대 범위보다 큰 수를 저장할 때 발생하는 현상을 가리킨다.
오버플로우가 발생하면 최상위 비트(MSB)를 벗어난 데이터가 인접 비트를 덮어쓰므로, 잘못된 결과를 얻을 수 있다. 또한, 언더플로우(underflow)란 해당 타입이 표현할 수 있는 최소 범위보다 작은 수를 저장할 때 발생하는 현상을 가리킨다.
(자바에서 정수형 타입 중 기본이 되는 타입은 int형입니다. 따라서 컴퓨터는 내부적으로 정수형 중에서도 int형의 데이터를 가장 빠르게 처리합니다.)
실수형 타입 - 실수(Floating point)로 표현되는 숫자를 저장한다.
JAVA에서 실수란 소수부나 지수부가 있는 수를 가리키며, 정수보다 훨씬 더 넓은 표현 범위를 가진다.
Ex) ... -2.0, -1.0, 0, 1.0, 2.0 ...
과거에는 실수를 표현할 때 float형을 많이 사용했지만, 하드웨어의 발달로 인한 메모리 공간의 증가로 현재에는 double형을 가장 많이 사용한다.
실수형 타입의 종류
실수형타입 | 지수의 길이 | 가수의 길이 | 유효 자릿수 |
float | 8 비트 | 23 비트 | 소수 부분 6자리까지 오차없이 표현할 수 있음. |
double | 11 비트 | 52 비트 | 소수 부분 15자리까지 오차없이 표현할 수 있음. |
실수형 타입 | 할당되는 메모리의 크기 | 데이터의 표현 범위 | 리터럴 타입 접미사 |
float | 4바이트 | (3.4 * 10^-38) ~ (3.4 * 10^38) | F 또는 f |
double | 8바이트 | (1.7 * 10^-308) ~ (1.7 * 10^308) | D 또는 d (생략 가능) |
문자형 타입 - 문자(Character)를 저장한다.
컴퓨터는 2진수밖에 인식하지 못하므로 문자도 숫자로 표현해야 인식할 수 있다.
따라서 어떤 문자를 어떤 숫자에 대응시킬 것인가에 대한 약속이 필요해진다.
C언어와 C++에서는 아스키코드(ASCII)를 사용하여 문자를 표현한다.
아스키코드(ASCII)는 영문 대소문자를 사용하는 7비트의 문자 인코딩 방식이다.
아스키코드는 문자 하나를 7비트로 표현하므로, 총 128개의 문자를 표현할 수 있다.
하지만 자바에서는 유니코드(unicode)를 사용하여 문자를 표현한다.
아스키코드는 영문자와 숫자밖에 표현 못 하지만, 유니코드는 각 나라의 모든 언어를 표현할 수 있다.
유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있다.
문자형 타입 | 할당되는 메모리의 크기 | 데이터의 표현 범위 |
char | 2바이트 | 0 ~ 2^16 |
논리형 타입 - 논리의 참과 거짓을 의미하는 true, false 중 하나의 값을 저장한다.
boolean형의 기본값은 false이며, 기본 타입 중 가장 작은 크기인 1바이트의 크기를 가진다.
논리형 타입 | 할당되는 메모리의 크기 | 데이터의 표현 범위 |
boolean | 1바이트 | true 또는 false |
참조형 변수는 8개의 기본형 변수를 사용하여 사용자가 직접 만들어 사용하는 변수를 의미한다.
Reference
1. http://tcpschool.com/java/java_datatype_variable
'JAVA' 카테고리의 다른 글
[JAVA] Exception in thread "main" java.lang.ArithmeticException: / by zero (2) | 2022.03.09 |
---|---|
JAVA - 반복문 (for문) (0) | 2022.02.05 |
JAVA - 배열 (Array) (2) | 2022.01.31 |
JAVA - 스캐너 클래스 (Scanner Class) (0) | 2022.01.26 |
JAVA - 객체 지향 프로그래밍 (OOP) (16) | 2022.01.12 |