데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다.
데이터 타입(자료형)은 크게 기본형 타입과 참조형 타입으로 구분된다.
- 기본형(primitive type) : 계산을 위해 실제 값을 저장한다.
- 참조형(reference type) : 객체의 주소를 저장한다. null 또는 객체의 주소(4byte, 0x0 ~ 0xffffffff)를 갖는다.
int x = 10;
// 정수형 변수 선언
// x에 int 형태의 10의 값을 대입
double y = 3.14;
// 실수형 변수 선언
// y에 double 형태의 3.14의 값을 대입
float z = 2.71f;
// 실수형 변수 선언
// z에 float 형태의 2.71의 값을 대입
char a = 'A';
// 문자형 변수 선언
// a에 char 형태의 'A'의 값을 대입
String c = "Hello, World!";
// 문자열 변수 선언
// c에 String 형태의 "Hello, World!"의 값을 대입
boolean b = true;
// 논리형 변수 선언
// b에 boolean 형태의 true의 값을 대입
1. 카멜 표기법(카멜 케이스:camelCase)
자바에서 가장 많이 쓰이는 표기법으로 카멜 표기법을 사용한다. 카멜 표기법은 낙타의 등을 닮았다고 해서 붙여진 이름으로, 단어의 첫 번째 글자는 소문자, 두 번째 단어부터 첫 글자를 대문자로 표기하는 방법이다.
int camelCase;
char studentNumber;
double classId;
2. 사용 가능한 문자(영문자, 숫자, _, $)
변수 이름에는 영문자(대소문자 구분), 숫자, _, $를 사용할 수 있다. 영문자는 대소문자가 구분되어 인식하기 때문에 유의해야 한다.(a와 A는 다른 문자)
// 선언 가능한 변수
int number;
int NUMBER;
int result_1;
int result$1;
int ReSuLt_$1;
// 선언 불가능한 변수
// 1. 숫자로 시작하는 변수명
int 10_number; // error 발생
// 2. 공백이 있는 변수명
int number 1; // error 발생
// 3. 특수문자가 포함된 변수명
int number!; // error 발생
// 4. 키워드(예약어)로 사용된 변수명
int int; // error 발생
3. 변수 이름은 사용 목적에 맞게 이름을 짓는다.
변수명은 사용 목적에 알맞게 짓는 것이 중요하다. 동작하는 데에는 문제가 없을지라도 다른 사람이 알아보기 힘든 변수명으로 이루어진 코드는 결코 잘 작성된 코드라 할 수 없다.
// 학생번호
int studentNumber;
int stdNum;
int stdNumber;
int studentNum;
// 카운터
int counter;
int count;
int cnt ;
// 잘못된 줄임말
int sN; // studentNumber임을 추측하기 어려움
int c; // count인지 c인지...
int cn; // cnt인지...
기본형 타입에는 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)으로 나뉜다.
기본형 타입에 대한 특징
- 모두 소문자로 시작된다
- 비객체 타입이므로 null 값을 가질 수 없다.(기본값이 정해져 있음)
- 변수의 선언과 동시에 메모리 생성
- 모든 값 타입은 메모리의 스택(stack)에 저장됨
- 저장공간에 실제 자료 값을 가진다.
int age = 30;
double tall = 182.3;
char gender = 'M';
참조형 타입은 간단히 말하자면, 위의 8가지 자료형(primitive type)을 제외한 나머지를 말한다고 보면 된다.
기본적으로 제공하는 클래스, 프로그래머가 스스로 만든 클래스, 배열, 열거 타입 등을 모두 참조형이라고 한다.
참조형 타입 특징
- 기본형과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장한다.
- 즉, 실제 값은 다른 곳에 있으며 값이 있는 주소를 가지고 있어서 나중에 그 주소를 참조해서 값을 가져온다.
- 메모리의 힙(heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장
- 참조형 변수는 null로 초기화 시킬 수 있다.
String name = "홍길동";
String[] hobby = new String() {"독서","게임","등산"};
Date date = new Date();