변수(Variables)와 상수(Constant)
✒️ 2025-05-16 13:41 내용 수정
특정 데이터를 저장하기 위한 메모리 공간
- 변수 이름은 표기 규칙#2. Camel 표기법을 따른다.
- 영문자, 숫자, 언더스코어(_), $ 로만 구성 가능
- 숫자로 시작할 수 없음
- 공백을 포함할 수 없음
- Java에서 미리 지정된 키워드는 사용 못함
- 저장된 값은 변경할 수 있다.
종류
- 기본형 변수(primitive type) : 실제 연산에 사용되는 변수. (데이터 타입(Data Types) 참고)
- 참조형 변수(reference type) : 객체를 참조하기 위한 변수.
- 객체의 주소(메모리 위치)를 저장하며, 해당 주소를 사용해서 실제 객체에 접근한다.
- 객체는 힙(Heap) 메모리에 동적으로 할당되며, 참조형 변수는 해당 객체를 가리키고, 스택 영역(Stack)에 저장된다.
- 동적 : 객체의 크기가 미리 정해진게 아니라 실행 중에 메모리가 할당된다.
- Resources/Java/메모리 구조 참고
- 참조형 변수로 객체의 속성(멤버 변수)에 접근하거나 객체의 메소드를 호출할 수 있다.
- object.method()
- Null 값을 가질 수 있고, 더 이상 참조되지 않는 객체는 가비지 컬렉터에 의해 자동으로 정리된다.
type 변수이름 = 초기값;
- 변수는 1) 선언을 먼저 하고 변수를 초기화하거나 2) 선언과 동시에 초기화할 수 있다.
- 선언만 하고 초기화하지 않은 변수는 시스템이 쓰레기값을 넣어두기 때문에 변수 사용 전에 반드시 초기화해줘야 한다.
- 초기화하지 않은 변수는 사용할 수 없다.
int a;
a = a+1; // => error! 초기값이 없어서 누적 불가
변수 타입 별 초깃값
| 변수 타입 | 초깃값 |
|---|---|
| char | '\u0000' |
| byte, short, int | 0 |
| long | 0L |
| float | 0.0F |
| double | 0.0 또는 0.0D |
| boolean | false |
| 배열, 인스턴스 등 | null |
상수(Constant)
변수처럼 데이터를 저장할 수 있는 메모리 공간이지만, 프로그램이 실행되는 동안 메모리에 저장된 데이터를 변경할 수 없다.
-
상수 이름은 표기 규칙#3. Constant을 따른다.
-
변수
- 선언과 동시에 반드시 초기화해야 한다. (값을 반드시 부여해줘야 한다)
- 선언된 후 값을 변경할 수 없다.
-
메소드
- 오버라이딩(Overriding)할 수 없다.
-
클래스
- 부모 클래스로써 상속(Inheritance)할 수 없다.
-
C++에서는 const 를 사용, Java에서는 final 을 사용
static final type 상수이름 = 값;
- final : 선언 후 변경할 수 없음
- static 메모리에 한 번만 적재됨
static final int speedOfLight = 299,792,458; // 단위 m/s, 놀랍게도 int다
static const int radiusOfEarth = 6,371; // 단위 km
리터럴(Literal)
그 자체로 값을 의미하는 것
- 변수, 상수와 다르게 데이터가 저장된 메모리 공간을 가리키는 이름이 없다.
- 타입별로 정수형, 실수형, 논리형, 문자형, 문자열, null 리터럴이 존재한다.
- 리터럴 타입 접미사 : 리터럴 뒤에 추가되어 해당 리터럴의 타입을 명시해주는 접미사
- long 형 : L 또는 l (123456L)
- float 형 : F 또는 f (1.2145F)
- double 형 : D 또는 d, 생략할 수 있다.
int var = 30; // 30이 리터럴
fianl int con = 100; // 100이 리터럴
- String 생성 시 리터럴을 사용하여 생성하면 String Pool에 저장된다.
String test = "String Test";