변수(Varible)
값이 변할 수 있는 데이터를 임시로 저장하기 위한 수단으로 메모리 공간을 확보하고 사람이 식별할 수 있는 이름을 붙인 것이라고 보면 되겠다.
변수 선언
변수를 선언한다는 것은 어떤 값을 저장할 메모리 공간을 확보하고, 해당 메모리 공간을 식별할 수 있는 이름을 붙이는 것을 의미한다.
값 할당
변수에 값을 저장하는 것을 할당 또는 대입이라고 한다. 변수 선언 후 처음으로 값을 할당하는 것을 초기화라고 한다. 초기화가 이루어진 이후에 다시 다른 값을 할당하는 것을 재할당 이라고 한다.
상수(Constant)
상수는 재할당이 금지된 변수로 변하지 말아야 할 데이터를 임시로 저장하기 위한 수단이다. final 이라는 키워드를 사용해 선언할 수 있으며 관례로 대문자에 언더바를 넣어 사용한다. 상수를 사용하는 이유는 다음과 같다.
- 프로그램이 실행되면서 값이 변하면 안되는 경우
프로그래머가 실수로 상수에 값을 재할당하고자 하면 에러가 발생하여 실수를 방지할 수 있다. - 코드 가독성을 높이는 이유
상수를 사용하면 값을 저장하고 있는 상수 명으로 값을 사용할 수 있기 때문에 코드 가독성이 향상된다. - 코드 유지관리를 손쉽게 하고자 하는경우
예를 들어 상수로 'final double CALCULATOR_PI = 3.14;' 가 선언된 프로그램에서 정밀도를 높이고자 3.241592로 값을 바꾸고 싶다면 상수만 변경하면 프로그램 전체애서 바뀐다.
타입(Type)
타입은 어떤 값의 유형 및 종류를 의미하며 타입에 따라 값이 차지하는 메모리 공간의 크기와 값이 저장되는 방식이 결정된다. 자바의 타입은 실제 값을 의미하는 기본타입과 어떤 값이 저장된 주소를 값으로 하는 참조 타입이 있다.
- 기본타입(primitive type)
값을 저장할 때 데이터의 실제 값이 저장된다. 정수타입(byte, short, int, long), 실수타입(float, double), 문자타입(char) 논리타입(boolean) 이 있다. - 참조타입(reference type)
값을 저장할 때 데이터가 저장된 곳을 나타내는 주소값이 저장된다. 8개의 기본형을 제외한 나머지 타입이다.
리터럴(Literal)
사전적 의미인 '문자 그대로의' 뜻처럼, 프로그래밍에서 리터럴이란 문자가 가리키는 값 그 자체를 의미한다. 값 대신 리터럴 이라는 표현을 하는게 개발자들과의 소통에 좋을 것 같다.
정수타입
정수 타입은 숫자를 나타내는 타입으로, byte, short, int, long 초 4개의 타입으로 분류된다. 이들은 각각 차지하는 메모리의 크기가 다르며 그에 따라 나타낼 수 있는 숫자의 범위가 다르다. 근래에는 메모리 용량이 부족한 경우가 거의 없기 때문에 정수형을 사용할때에는 일반적으로 int형을 사용한다.
타입 | 메모리 | 표현범위 |
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 |
정수형 리터럴 중 long type의 리터럴의 경우에 뒤어 접미사 L을 붙여 사용하여야 한다. 숫자 1과 혼동이 될 우려가 있어 일번적으로 대문자 L을 사용한다.
// 각 데이터 타입의 표현 범위에 맞는 값을 할당하고 있다
byte byteNum = 123;
short shortNum = 12345;
int intNum = 123456789;
long longNum = 12345678910L;
// 각 데이터 타입의 표현 범위에 벗어난 값을 할당하고 있어 에러가 발생한다.
byte byteNum = 130;
short shortNum = 123456;
int intNum = 12345678910;
// 숫자가 길면 언더바로 구분할 수 있다.
int intNum = 12_345_678_910;
long longNum = 12_345_678_910L;
정수형의 오버플로우와 언더플로우
- 오버플로우
자료형이 표현할 수 있는 범위중 최대값 이상의 값을 표현할 경우 발생한다. 최대값을 넘어가면 해당 데이터 타입의 최소값으로 값이 순환된다. - 언더플로우
자료형이 표현할 수 있는 범위중 최소값 이하의 값을 표현할 경우 발생한다. 최소값을 넘어가면 해당 데이터 타입의 최대값으로 값이 순환된다.
실수타입
실수는 소수점을 가지는 값을 의미하며 float형과 double 형으로 분류된다.
타입 | 메모리 | 표현범위 | 정밀도 |
float | 4byte | 음수: -3.4*10^38~-1.4*10^-45 양수: 1.4*10^-45~3.4*10^38 |
7자리 |
double | 8byte | 음수: -1.8*10^308~-4.9*^10^-324 양수: 4.9*10^-324~1.8*10^308 |
15자리 |
double형 리터럴에는 접미서 d를 붙여도, 붙이지 않아도 되지만, float형은 리터럴에 반드시 접미사 f를 붙여주어야 한다.
double형은 float보다 더 큰 실수를 저장할 수 있으며 더 정확하게 저장할 수 있다.
// float형 리터럴을 float형 변수에 할당
float num1 = 3.14f;
// double형 리터럴을 double형 변수에 할당
double num2 = 3.141592d;
double num2 = 3.141592;
실수형의 오버플로우와 언더플로우
- 오버플로우
값이 음의 최소범위 또는 양의 최대범위를 넘어갔을 때 발생하며 이때 값은 무한대가 된다. - 언더플로우
값이 음위 최대범위 또는 양의 최소범위를 넘어갔을 때 발생하며 이때 값은 0이 된다.
논리타입
논리 타입은 boolen형으로 참 또는 거짓을 저장할 수 있는 데이터 타입으로 true, false를 값으로 가진다. 단순히 참과 거짓을 표현하기 위해서는 1bit만 있으면 되지만 JVM이 다룰 수 있는 데이터의 최소단위가 1byte로 boolen 형은 1 byte(8bit)의 크기를 가진다. boolen형은 조건문과 함께 자주 사용되므로 향후 다시 실습해보기로 하자.
문자타입
문자 타입은 2byte의 크기의 char형이 있다. 문자타입 변수를 선언하면 해당 변수에 오직 하나의 문자형 리터를을 저장할 수 있으며 반드시 작은따옴표를 사용하여야 한다. 자바는 유니코드로 문자를 저장한다.
'공부 > 전자컴퓨터공학' 카테고리의 다른 글
Java 연산자(Operator) 및 콘솔 입출력 Java 기초 배우기 (0) | 2024.05.09 |
---|---|
Java 문자열(string) Java 기초 배우기 (1) | 2024.05.07 |
Java의 특징, IntelliJ 프로젝트 생성하기 (0) | 2024.05.06 |
JDK IntelliJ JetBrains Toolbox 설치하기 Java 기초 (0) | 2024.05.03 |
Git & GitHub 란? Git 설치 및 기초 습득하기 (3) | 2024.05.03 |