[Java] Java의 변수와 상수🖥️ Dev/Java2025. 7. 4. 17:19
Table of Contents
이 글은 Java의 변수(Variable)와 상수(Constant)에 대해 정리한 글입니다.
📖 변수 (Variable)
📌 변수의 개념
- 데이터를 임시로 저장하는 메모리 공간에 붙여진 이름이다. ➡️ 변할 수 있는 값을 저장하는 공간의 이름
- 프로그램이 실행되는 동안, 필요에 따라 값의 저장, 변경, 읽기가 모두 가능하다.
- 실제로는 RAM(주기억장치)의 일부 공간을 의미하며, 변수명은 그 공간을 가리키는 별명이다.
📌 변수 선언과 초기화
⚡ 변수의 선언 (Declaration)
- 변수를 사용하기 전, 어떤 데이터 타입인지 반드시 명시해야 한다. (ex.
int number;
) - 자바는 강타입 언어이므로 타입이 다르면 에러가 발생한다.
[Java] Java의 기본 데이터 타입
Java의 데이터 타입은 크게 기본(primitive) 데이터 타입과 참조(reference) 타입으로 나뉩니다. 이 글은 Java의 기본 데이터 타입(Primitive Data Types)에 대해 정리한 글입니다.📖 기본 데이터 타입(Primitive T
devkuk.tistory.com
⚡ 변수의 초기화 (Initialization)
- 선언 후 값을 최초로 대입하는 과정을 의미한다.
- 변수를 선언하고 나중에 값을 대입할 수도 있고, 선언과 동시에 값을 대입할 수도 있다.
// 선언과 초기화를 따로 진행
int number; // 선언
number = 10; // 초기화
// 선언과 초기화를 동시에 진행
int number = 10;
⚡ 변수의 사용 (Access)
- 변수는 선언과 초기화가 모두 끝나야 사용이 가능하다.
- 값을 읽거나, 연산하거나, 다른 변수에 대입할 수 있다.
📌 변수의 메모리 저장과 수명
public class VariableTypeExample {
int instanceVar = 1; // 인스턴스 변수(필드)
static int staticVar = 2; // 클래스 변수(정적 변수)
public void method() {
int localVar = 3; // 지역 변수
System.out.println(localVar);
}
}
⚡ 지역 변수 (Local Variable)
- 메서드, 블록 안에 선언하는 변수이다.
- 해당 블록이 끝나면, 메모리에서 소멸한다.
- 초기화하지 않으면 사용이 불가능하다. (컴파일 에러)
⚡ 인스턴스 변수 (Field)
- 클래스 내부, 메서드 외부에 선언하는 변수이다.
- 객체(인스턴스)를 생성할 때 메모리에 할당된다.
- 객체가 소멸하면 변수도 소멸한다.
⚡ 클래스 변수 (Static Variable)
static
키워드를 사용하는 변수이다.- 클래스가 메모리에 로드될 때 할당되며, 프로그램이 종료될 때까지 유지된다.
- 모든 인스턴스에서 공유한다.
📌 변수명 규칙 (식별자 규칙)
- 첫 글자는 반드시 문자(영문 / 한글), 밑줄(
_
), 달러($
)로 시작한다. - 두 번째 글자부터는 숫자도 가능하다.
- 자바 예약어(ex.
int
,class
,public
등)는 사용이 불가능하다. - 대소문자를 구분한다.
- 2단어 이상 연결될 때에는 관례적으로 카멜케이스(camelCase)를 사용한다.
- 가독성이 중요하다. ➡️ 의미 있는 이름을 사용해야 한다. 한 글자(ex.
a
,b
등)는 권장하지 않는다.
📌 변수의 기본값 (Default Value)
public class DefaultValueDemo {
int num; // 0
boolean flag; // false
char ch; // '\u0000'
}
- 지역 변수 : 반드시 명시적으로 초기화해야 한다. (초기화 없이 사용하는 경우, 컴파일 에러 발생)
- 필드(멤버 변수, 클래스 변수) : 자동으로 타입별 기본 값이 선언과 동시에 할당된다.
int
,byte
,short
,long
:0
float
,double
:0.0
boolean
:false
char
:'\n0000'
- 참조 타입 :
null
📖 상수 (Constant)
📌 상수의 개념
- 상수는 "변하지 않는 값"을 저장하는 공간이다. ➡️ 변수와 선언 형태는 비슷하지만, 값 변경이 불가능하다.
- 프로그램 내에서 고정된 값인 경우 사용한다. (ex. 원주율, 세율, 기준값 등)
- 상수를 사용함으로서 가독성 향상, 실수 방지, 유지보수 용이해진다.
📌 상수의 선언
public class ConstantExample {
public static final double PI = 3.14159; // 클래스 상수
public static final int MAX_LOGIN = 5;
public static final String COMPANY_NAME = "OpenAI";
public static void main(String[] args) {
final int AGE = 30; // 지역 상수
System.out.println(PI);
System.out.println(AGE);
}
}
final
키워드를 사용하며, 초기화 후 값 변경이 불가능하다.- 관례적으로 대문자 + 언더바를 사용한다. (ex.
PI
,MAX_SIZE
) - 클래스 레벨 상수는
static final
로 선언한다. ➡️ 여러 인스턴스에서 공유되지만, 변하지 않는다.
📌 상수의 장점
- 실수 방지 : 잘못된 값 변경으로 인한 오류를 예방한다.
- 의미 있는 이름 부여 : 코드 이해도를 향상한다.
- 유지보수 용이 : 값 변경 시 선언부 한 곳만 수정하면 코드 전체에 반영된다.
- 프로그램 설계 명확화 : 규약, 정책, 기준값 등 명확히 표현한다.
📌 상수의 메모리 구조
- 컴파일 시 상수 풀(Constant Pool)에 저장하고, 실행 중 반복적으로 재사용한다.
static final
상수는 클래스가 메모리에 적재될 때 한 번만 할당한다.
📌 리터럴(Literal)과 상수의 차이
- 리터럴 : 코드에 직접 사용된 값을 의미한다. (ex.
10
,3.14
,"hello"
) - 상수 : 리터럴에 의미를 부여해 이름을 붙인 것을 의미한다.
⚠️ 변수 및 상수 관련 주의사항
- 변수명 오타 : 변수명이 다르면 다른 공간으로 취급한다. 자바는 대소문자도 구분하기 때문에 오타에 주의가 필요하다.
- 초기화 안한 변수 사용 : 지역 변수는 반드시 값을 할당한 후 사용해야 한다.
final
변수 재할당 시도 : 한 번 값을 지정한 뒤 변경을 시도하면 컴파일 오류가 발생한다.- 상수명 오타 : 관례적으로 대문자 + 언더바를 사용하며, 잘못된 표기법은 피하는 것이 좋다.
✅ 변수와 상수의 접근 제한자 (Access Modifier)
(더 자세한 내용은 추후에 다루지 않을까 생각된다...)
public class Example {
public int publicVar;
private int privateVar;
protected int protectedVar;
int defaultVar; // 패키지 전용
}
public
: 어디서나 접근이 가능하다.private
: 같은 클래스 내에서만 접근이 가능하다.protected
: 같은 패키지 혹은 상속 관계에서만 접근이 가능하다.- (default, package-private) : 같은 패키지 내에서만 접근이 가능하다.
➡️ 실제 프로젝트에서는 상수는 보통 public static final
로 선언하고, 변수(필드)는 private
로 선언한 후 getter
/setter
로 접근하는 것이 권장된다.
'🖥️ Dev > Java' 카테고리의 다른 글
[Java] Java의 연산자 (산술, 비교, 논리, 대입 등) (0) | 2025.07.05 |
---|---|
[Java] Java의 기본 데이터 타입 (1) | 2025.06.24 |
[Java] Java의 표준 입출력 (0) | 2025.06.16 |
[Java] Java 개발 환경 세팅 가이드 (with. Visual Studio Code) (0) | 2025.06.16 |
@청월누리 :: DevKuk 개발 블로그
since 2025.01.27. ~ 개발자를 향해....🔥