Variable (변수)
변하는 값을 저장하기 위해 사용하는 메모리 공간이다.
변수는 프로그램 실행 중에 값이 변경될 수 있다.
int number; // 변수 선언
number = 10; // 초기화 (값 할당)
int count = 5; // 선언과 동시에 초기화
// 자료형 / 변수명 / 값
int num = 1;
// 문자 하나를 할당할 때는 작은 따옴표('') 문자열은 큰 따옴표("")를 사용한다.
char name = "kim";
boolean taf = true;
재할당
변수를 이미 선언한 후에 다른 값을 할당하는 것을 재할당이라고 한다.
int num = 1;
num = 2;
재선언
변수를 이미 선언한 후에 같은 이름의 변수를 또 다시 선언하는 것을 재선언이라고 한다.
int num = 1; // 변수 선언과 초기화
num = 2; // 변수 값 재할당
int num = 10; // 같은 이름의 변수를 다시 선언 (오류)
// 동일한 스코프 내에서 중복선언 불가
int num = 25; // 첫 번째 스코프에서 age 변수를 선언
if (condition) {
int num = 30; // 두 번째 스코프에서 age 변수를 새롭게 선언
// 이 스코프 내에서는 첫 번째 스코프와는 별개의 age 변수가 사용됨
}
// 첫 번째 스코프와 두 번째 스코프에서 num은 이름은 같지만 다른 변수이다.
변수는 선언 시 데이터 타입이 반드시 지정되며, 데이터 타입에 맞는 값만 저장할 수 있다.
지역 변수는 메서드나 블록 내에서 선언된 변수로, 해당 메서드나 블록 내에서만 접근할 수 있으며,
전역 변수는 클래스 멤버로 선언된 변수로, 클래스의 모든 메서드에서 접근할 수 있다. (보통 static 키워드로 선언됨)
기본형 변수로는 int, double, char, boolean 등 기본 데이터 타입을 저장하는 변수가 있으며,
배열, 객체, 클래스 등 기본형 이외의 참조 타입을 저장하는 참조형 변수가 있다.
Constant (상수)
변하지 않는 값을 저장하기 위해 사용하는 메모리 공간이다.
상수는 선언 후 값을 변경할 수 없다.
final int MAX_USERS = 100; // 상수 선언과 초기화
상수는 final 키워드를 사용하여 선언하며, 선언과 동시에 초기화해야 한다.
// 변수선언과 비슷하지만 앞에 final을 붙인다.
final int MAX_VALUE = 100;
MAX_VALUE = 120; // 재할당 불가 (오류)
상수는 한 번 초기화된 이후 값이 바뀌지 않는다.
또한, 상수는 일반적으로 대문자 이름으로 선언하여 변수와 구분한다.
여러 단어일 경우 언더스코어(_)로 구분한다.
static과 final을 함께 사용하여 클래스 전체에서 공유할 수 있는 상수를 선언할 수도 있다.
final double PI = 3.14159; // 원주율을 나타내는 상수
static final int MAX_HEIGHT = 250; // 클래스 상수
변수와 상수의 차이점
구분 | 변수 | 상수 |
값 변경 | 값이 변경될 수 있음 | 값이 변경될 수 없음 |
선언 방식 | 자료형만 사용 (int count) | final 키워드 사용 (final int MAX) |
사용 목적 | 자주 변경되는 데이터를 저장할 때 사용 | 변경되지 않는 고정값을 저장할 때 사용 |
이름 규칙 | 소문자 또는 카멜케이스 사용 (myVar) | 대문자 사용, 언더스코어로 구분 (MY_VAR) |
예제 코드
아래 코드는 변수와 상수의 사용을 보여준다.
public class Example {
// 클래스 상수 선언
static final int MAX_SPEED = 120;
public static void main(String[] args) {
// 변수 선언 및 초기화
int currentSpeed = 50;
final int MIN_SPEED = 0; // 지역 상수
// 값 변경 가능 (변수)
currentSpeed = 80;
System.out.println("현재 속도: " + currentSpeed);
// 값 변경 불가 (상수)
// MAX_SPEED = 130; // 오류 발생: 상수는 변경할 수 없음
System.out.println("최대 속도: " + MAX_SPEED);
}
}
이 코드에서 MAX_SPEED는 상수이므로 값이 바뀌지 않고, currentSpeed는 변수이므로 값이 변경될 수 있다.
'Java' 카테고리의 다른 글
Java 조건문 (if, if else, switch case) (0) | 2024.11.14 |
---|---|
Java 문자열 (String) (1) | 2024.11.14 |
Java 배열 (Array) (0) | 2024.11.13 |
Java 형 변환 (Type Casting) (0) | 2024.11.12 |
Java 자료형 정리 (Java Data Type) (1) | 2024.11.11 |