본문 바로가기
JAVA/개념정리

[JAVA] 변수의 자료형

by JJH0100 2022. 9. 15.
728x90
반응형

변수

변수란 데이터를 저장하는 메모리 공간이다.

int age;
변수타입 변수이름;

데이터타입(자료형)에 맞는 변수를 선언해주어야 한다. 데이터 타입에는 정수형, 실수형, 문자형 등 다양한 타입이 존재한다.

 

변수명 작성규칙

[필수]

  • 대소문자가 구분되며 길이에 제한이 없다
  • 예약어를 사용하면 안된다
  • 숫자로 시작하면 안된다
  • 특수문자는 _와 $만 허용한다.

[++추가]

  • 클래스 이름의 첫 글자는 대문자로 한다.
  • 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다
  • 상수, final의 이름은 모두 대문자로 정의 한다. 여러 단어로 이루어진 경우 _로 구분한다.

 

변수 초기화

※ 변수를 선언한 이후에는 사용하기 전 초기화(initialization) 해주어야 한다. 초기화는 변수의 처음 값을 지정해주는 것이다.

왜 초기화해야 하는가?

변수를 지정하면 메모리를 할당받는다. 그러나 메모리는 여러 프로그램이 공유하는 자원이기 때문에 이전의 프로그램에 의해 저장된 ‘알 수 없는 값(쓰레기값, garbage value)’이 남아있을 수 있다. 따라서 변수를 선언하면 이 엉뚱한 값이 들어있지 않도록 초기화 시켜줘야한다.

int age=25;

+) 지역변수는 사용되기 전에 초기화를 반드시 해야하지만, 클래스변수와 인스턴스변수는 초기화를 생략할 수 있다.

 


 

자료형의 종류

자료형은 크게 ‘기본형’과 ‘참조형’ 두 가지로 나뉜다.

기본형 변수는 실제 값(data)를 저장하는 변수이고, 참조형 변수는 값이 저장되어 있는 주소(memory address)를 값으로 갖는 변수이다.

 

참조형 변수

메모리에는 1byte의 단위로 일련번호가 붙어있다. 이를 메모리 주소(memory address)라고 하는데, 이 주소값을 저장하고 있는 변수가 바로 참조형 변수이다.

 

참조형 변수를 선언 할 때는 변수의 타입으로 클래스의 이름을 사용한다. 클래스의 이름이 참조변수의 타입이 되는 것이다. 그래서 새로운 클래스를 작성한다는 것은 새로운 참조형을 추가하는 셈이된다.

 

복잡하니까, 그냥 변수의 타입이 기본형이 아닌 것들은 모두 참조변수라고 생각하자.

Date today = new Date();

연산자 new의 결과는 생성된 객체의 주소가 된다. 즉, Date라는 객체를 생성해서, 그 주소를 참조형 변수 today에 저장한다는 의미이다.

 

자바에서는 참조형 변수 간의 연산은 할 수 없다. 따라서 실제 연산에 사용되는 것은 모두 기본형 변수 이다.

 

기본형 변수(primitive type)

변수의 값에는 총 8개의 기본형이 있다. 

데이터 자료형 크기
문자형 char 2byte
정수형 byte  1byte
short  2byte 
int  4byte 
long  8byte 
실수형 float  4byte 
double  8byte 
논리형 boolean 1byte

boolean은 false와 true 두가지 값을 가지는 자료형이다.

 

문자형인 char은 문자를 정수(유니코드)로 저장하기 때문에 정수형과 비슷하며, 정수형이나 실수형과 연산도 가능하다. 반면, boolean은 다른 기본형과 연산이 불가능하다.

자료형  저장가능한 값의 범위  bit  byte
boolean false, true 8 1
char ‘\u0000’~’\uffff’ 16 2
byte -128 ~ 127 8 1
short -32,768 ~ 32,767 16 2
int -2,147,483,648 ~ 2,147,483,647 32 4
long -9,223,372,036,854,775,808~9,223,372,036,854,775,807 68 8
float 1.4E-45 ~ 3.4E38 32 4
double 4.9E-324 ~ 1.8E308 64 8
728x90
반응형

'JAVA > 개념정리' 카테고리의 다른 글

[JAVA] IF문의 활용  (2) 2022.09.16
[JAVA] 연산자(operator)  (0) 2022.09.16
[JAVA] 출력 지시자 printf()  (0) 2022.09.16
이클립스(Eclipse) 설치, 단축키  (0) 2022.07.27
[JAVA] Java11 설치  (0) 2022.07.27

댓글