Java에서 변수는 프로그램이 데이터를 저장하고 조작하는 핵심 요소입니다. Java 변수는 메모리 공간에 값을 저장하여 필요할 때 불러와 사용하는 역할을 하며, 데이터 타입과 변수의 종류에 따라 다양한 방식으로 사용됩니다. 이번 글에서는 Java에서 변수를 선언하고 사용하는 방법, 그리고 각 변수의 종류와 특징에 대해 알아보겠습니다.
Java에서 변수란?
Java 변수는 데이터를 저장할 수 있는 메모리 공간을 할당하는 것으로, 값을 재사용하거나 다른 값으로 변경할 수 있습니다. 변수는 데이터 타입과 변수 이름으로 구성됩니다. 변수에 데이터를 저장하면 변수 이름을 통해 해당 데이터를 쉽게 불러올 수 있습니다.
변수 선언 기본 구조
데이터타입 변수이름 = 값;
변수 선언 시 데이터 타입은 변수에 저장할 수 있는 데이터의 종류를 결정하며, 변수 이름은 데이터를 쉽게 참조할 수 있는 이름입니다.
예제 코드
public class VariableExample {
public static void main(String[] args) {
int age = 25; // 정수형 변수 선언
double salary = 55000.75; // 실수형 변수 선언
System.out.println("나이: " + age);
System.out.println("월급: " + salary);
}
}
출력 결과:
나이: 25
월급: 55000.75
Java의 기본 데이터 타입
Java에는 8가지의 기본 데이터 타입이 있습니다. 이러한 타입은 데이터의 크기와 저장할 수 있는 값의 종류를 결정합니다.
- 정수형:
byte
(1바이트),short
(2바이트),int
(4바이트),long
(8바이트) - 실수형:
float
(4바이트),double
(8바이트) - 문자형:
char
(2바이트, 유니코드 문자) - 논리형:
boolean
(1바이트,true
또는false
값만 저장 가능)
예제 코드
public class DataTypeExample {
public static void main(String[] args) {
int intVar = 100; // 정수형
double doubleVar = 123.45; // 실수형
char charVar = 'A'; // 문자형
boolean boolVar = true; // 논리형
System.out.println("정수형: " + intVar);
System.out.println("실수형: " + doubleVar);
System.out.println("문자형: " + charVar);
System.out.println("논리형: " + boolVar);
}
}
출력 결과:
정수형: 100
실수형: 123.45
문자형: A
논리형: true
Java에서는 데이터 타입에 따라 변수 선언 시 필요한 메모리 공간이 다르며, 값의 범위도 달라집니다.
변수의 종류
Java에서는 변수의 위치와 생명 주기에 따라 로컬 변수, 인스턴스 변수, 클래스 변수로 분류됩니다. 각 변수는 프로그램에서 다르게 동작하며, 사용하는 위치와 방식이 다릅니다.
1. 로컬 변수 (Local Variable)
로컬 변수는 메서드나 블록 내에서 선언되며, 해당 블록이나 메서드가 실행될 때만 유효합니다. 블록을 벗어나면 변수는 소멸되고, 다른 메서드에서는 접근할 수 없습니다.
예제 코드
public class LocalVariableExample {
public static void main(String[] args) {
int localVar = 50; // 로컬 변수 선언
System.out.println("로컬 변수 값: " + localVar);
}
}
로컬 변수는 선언된 메서드나 블록에서만 사용되며, 메서드가 끝나면 메모리에서 사라집니다.
2. 인스턴스 변수 (Instance Variable)
인스턴스 변수는 클래스의 인스턴스(객체)에 속하며, 클래스가 인스턴스화될 때마다 개별적으로 생성됩니다. 인스턴스 변수는 주로 class
내부에 선언하며, static
키워드가 없습니다.
예제 코드
public class InstanceVariableExample {
int instanceVar = 100; // 인스턴스 변수
public static void main(String[] args) {
InstanceVariableExample obj1 = new InstanceVariableExample();
InstanceVariableExample obj2 = new InstanceVariableExample();
obj1.instanceVar = 200;
System.out.println("obj1의 인스턴스 변수: " + obj1.instanceVar);
System.out.println("obj2의 인스턴스 변수: " + obj2.instanceVar);
}
}
출력 결과:
obj1의 인스턴스 변수: 200
obj2의 인스턴스 변수: 100
위 코드에서 obj1
과 obj2
는 각각 독립적인 인스턴스 변수를 가집니다.
3. 클래스 변수 (Class Variable)
클래스 변수는 static
키워드를 사용하여 선언하며, 모든 인스턴스가 공유합니다. 클래스가 메모리에 로드될 때 초기화되며, 모든 객체가 동일한 값을 공유합니다.
예제 코드
public class ClassVariableExample {
static int classVar = 500; // 클래스 변수
public static void main(String[] args) {
System.out.println("클래스 변수 값: " + ClassVariableExample.classVar);
ClassVariableExample.classVar = 1000;
System.out.println("변경된 클래스 변수 값: " + ClassVariableExample.classVar);
}
}
출력 결과:
클래스 변수 값: 500
변경된 클래스 변수 값: 1000
클래스 변수는 모든 객체에서 동일한 값을 참조하므로, 한 번 변경하면 모든 객체에 영향을 미칩니다.
Java 변수 초기화
Java에서 변수를 선언할 때 초기값을 설정하는 것을 변수 초기화라고 합니다. 초기화가 되지 않은 변수는 사용할 수 없으며, 사용 전에 반드시 초기화해야 합니다.
예제 코드
public class InitializationExample {
public static void main(String[] args) {
int number = 10; // 변수 선언과 동시에 초기화
System.out.println("초기화된 변수 값: " + number);
}
}
로컬 변수는 사용 전에 반드시 초기화해야 하며, 인스턴스 변수와 클래스 변수는 기본값(정수형 0, 실수형 0.0, boolean은 false, char는 '\u0000')으로 자동 초기화됩니다.
변수 사용 시 주의 사항
- 이름 규칙 준수: 변수 이름은 문자, 숫자, 밑줄(
_
), 달러 기호($
)로 구성할 수 있으며, 숫자로 시작할 수 없습니다. - 의미 있는 이름 사용: 변수 이름은 데이터를 잘 설명할 수 있는 의미 있는 이름으로 지정하는 것이 좋습니다.
- 자료형에 맞는 값 저장: 변수에는 선언한 데이터 타입에 맞는 값만 저장할 수 있습니다.
결론
Java에서 변수는 데이터를 저장하고 관리하는 핵심 요소입니다. 변수의 종류에 따라 사용 방법과 메모리 관점에서의 동작이 다르며, 데이터 타입에 따라 값의 범위가 결정됩니다. 변수 선언과 초기화를 적절히 사용하여 안정적이고 가독성 높은 코드를 작성해 보세요!
댓글 쓰기