변수란, 단 하나의 값을 저장할 수 있는 메모리 공간
변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것
int age = 25; // 변수 age를 선언하고 25로 초기화한다.
int a,b; int x= 0, y = 20;
'변수의 이름'처럼 프로그래밍에서 사용하는 모든 이름을 '식별자(identifier)' 라고 하며, 식별자는 같은 영역 내에서 서로 구분(식별)될 수 있어야 한다.
기본형(primitibe type): 실제 값(data)을 저장
- ex) 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)
분류 | 타입 |
---|---|
논리형 | boolean |
문자형 | char |
정수형 | byte, short, int, long |
실수형 | float, double |
기본형의 종류와 크기
종류\크기 | 1 byte | 2byte | 4 byte | 8 byte |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
참조형(reference type): 어떤 값이 저장되어 있는 주소를 값으로 갖는다.
- (객체의 주소를 저장) 기본형을 제외한 나머지 타입
참조형 변수를 선언할 대는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조변수의 타입이 된다.
Date today = new Date(); //Date 객체를 생성해서, 그 주소를 today에 저장
'상수(constant)'는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만, 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다.
final int MAX_SPEED; // 에러. 상수는 선언과 동시에 초기화해야함
final int MAX_SPEED = 100; // OK. 선언과 동시에 초기화했음
상수를 사용하는 이유는 리터럴에 '의미있는 이름'을 붙여서 이해와 수정을 쉽게 만들기 때문이다.
'리터럴(literal)'은 단지 우리가 기존에 알고 있던 '상수'의 다른이름이다.
프로그래밍에서 상수를 '값을 한 번 저장하면 변경할 수 없는 저장공간'으로 정의하였기 때문에 이와 구분하기 위해 상수 대신 리터럴을 사용하는 것이다.
int year = 2022; // year은 변수
final int MAX_VALUE = 100; // 여기서 2022와 100은 리터럴, MAX_VALUE는 상수이다.
리터럴의 타입과 접미사
변수에 타입이 있는 것처럼 리터럴에도 타입이 있다.
종류 | 리터럴 | 접미사 |
---|---|---|
논리형 | false, true | 없음 |
정수형 | 123,0b0101, 077, 0xFF,100L | L |
실수형 | 3.14, 3.0e8, 1.4f | f, d |
문자형 | 'A', '1', '\n' | 없음 |
문자열 | "ABC", "123", "A", "true" | 없음 |
정수형
실수형
문자, 문자열
String str = ""; // OK. 내용이 없는 빈 문자열
char ch = ''; // error. ''안에 반드시 하나의 문자가 필요