Java Variables
Java Variables: 자바 변수 가이드
- *변수(Variable)**는 프로그램에서 데이터를 저장하고 관리하기 위한 메모리 공간을 의미합니다. Java에서는 변수를 사용하여 데이터 값을 저장하고, 필요할 때 값을 읽거나 변경할 수 있습니다. 변수를 선언할 때 데이터 타입을 지정해야 하며, Java는 강타입 언어이기 때문에 각 변수는 특정 타입의 데이터만 저장할 수 있습니다.
이 가이드는 Java에서 변수를 사용하는 방법, 변수의 종류, 데이터 타입, 변수의 범위와 생명주기를 설명합니다.
1. 변수 선언과 초기화
변수 선언 (Variable Declaration)
변수를 선언할 때는 데이터 타입과 변수 이름을 지정해야 합니다.
int age; // 정수형 변수 age 선언
변수 초기화 (Variable Initialization)
변수를 선언한 후, 값을 할당하여 초기화할 수 있습니다.
age = 25; // 변수 age에 값 25 할당
변수를 선언과 동시에 초기화할 수도 있습니다.
int age = 25; // 변수 선언과 초기화
2. 변수의 데이터 타입 (Data Types)
Java에서 변수는 기본 데이터 타입(Primitive Data Types)과 참조 데이터 타입(Reference Data Types)으로 나뉩니다.
2.1. 기본 데이터 타입 (Primitive Data Types)
Java에는 8가지의 기본 데이터 타입이 있습니다:
데이터 타입 | 크기 | 설명 | 예시 |
---|---|---|---|
byte |
1바이트 | 정수 (범위: -128 ~ 127) | byte b = 10; |
short |
2바이트 | 정수 (범위: -32,768 ~ 32,767) | short s = 1000; |
int |
4바이트 | 정수 (범위: -2^31 ~ 2^31-1) | int a = 25; |
long |
8바이트 | 큰 정수 | long l = 123456789L; |
float |
4바이트 | 소수점 이하가 있는 실수 | float f = 5.75f; |
double |
8바이트 | 더 높은 정밀도의 실수 | double d = 19.99; |
char |
2바이트 | 단일 문자 | char c = 'A'; |
boolean |
1비트 | 참(true ) 또는 거짓(false ) |
boolean isTrue = true; |
2.2. 참조 데이터 타입 (Reference Data Types)
참조 데이터 타입은 객체를 참조하는 변수입니다. 문자열, 배열, 클래스, 인터페이스 등이 참조 데이터 타입에 해당합니다. 기본 데이터 타입과 달리 참조 데이터 타입은 Heap 메모리에 저장된 객체를 가리킵니다.
- String: 문자열 데이터를 저장하는 참조 데이터 타입입니다.
String name = "Alice"; // 문자열을 저장하는 변수
3. 변수의 종류
Java에서는 변수의 종류에 따라 로컬 변수, 인스턴스 변수, **클래스 변수(정적 변수)**로 구분됩니다.
3.1. 로컬 변수 (Local Variable)
- 로컬 변수는 메소드나 블록 내부에서 선언되며, 해당 블록이 끝나면 소멸됩니다.
- 초기화 없이 사용하면 오류가 발생합니다.
public class LocalVariableExample {
public static void main(String[] args) {
int localVar = 10; // 로컬 변수
System.out.println("로컬 변수 값: " + localVar);
}
}
3.2. 인스턴스 변수 (Instance Variable)
- 인스턴스 변수는 클래스 내부에서 선언되며, 클래스의 각 객체에 속하는 변수입니다.
- 객체가 생성될 때마다 새로운 인스턴스 변수가 생성됩니다.
public class Car {
String model; // 인스턴스 변수
public void drive() {
System.out.println("운전 중인 차량: " + model);
}
public static void main(String[] args) {
Car myCar = new Car(); // 객체 생성
myCar.model = "Tesla";
myCar.drive();
}
}
3.3. 클래스 변수 (Class Variable, Static Variable)
- 클래스 변수는
static
키워드를 사용하여 선언되며, 모든 객체가 공유하는 변수입니다. - 클래스 변수는 프로그램 시작 시 메모리에 로드되고, 종료 시 해제됩니다.
public class Employee {
static int companyID = 1001; // 클래스 변수
String name; // 인스턴스 변수
public static void main(String[] args) {
Employee emp1 = new Employee();
emp1.name = "Alice";
Employee emp2 = new Employee();
emp2.name = "Bob";
// 클래스 변수는 모든 객체가 동일한 값을 공유
System.out.println("회사 ID: " + Employee.companyID);
}
}
4. 변수의 범위 (Scope)
변수의 **범위(Scope)**는 변수가 접근할 수 있는 영역을 의미합니다.
- 로컬 변수는 메소드 내부에서만 사용 가능하며, 메소드 호출이 끝나면 소멸됩니다.
- 인스턴스 변수는 객체가 생성된 후, 해당 객체가 메모리에서 사라질 때까지 접근 가능합니다.
- 클래스 변수는 프로그램이 종료될 때까지 유지되며, 모든 인스턴스에서 공유됩니다.
5. 상수 (Constant)
Java에서 상수는 변하지 않는 값을 의미하며, 선언 후 값을 변경할 수 없습니다. 상수는 final
키워드를 사용해
선언합니다.
상수 선언 예:
public class ConstantsExample {
public static final double PI = 3.14159; // 상수 선언
public static void main(String[] args) {
System.out.println("원주율: " + PI);
}
}
설명:
final
: 변수 앞에final
을 붙이면 상수로 선언되며, 값이 변경되지 않습니다.- 상수 이름은 대문자로 작성하는 것이 관례입니다.
6. 변수 사용 예시
6.1. 변수 선언과 초기화
public class VariableExample {
public static void main(String[] args) {
int age = 30; // 정수형 변수 선언 및 초기화
double price = 19.99; // 실수형 변수 선언 및 초기화
boolean isValid = true; // 논리형 변수 선언 및 초기화
System.out.println("나이: " + age);
System.out.println("가격: " + price);
System.out.println("유효성: " + isValid);
}
}
6.2. 인스턴스 변수와 클래스 변수
public class Person {
String name; // 인스턴스 변수
static String country = "USA"; // 클래스 변수
public void display() {
System.out.println("이름: " + name + ", 국가: " + country);
}
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "John";
p1.display();
Person p2 = new Person();
p2.name = "Alice";
p2.display();
}
}
요약
Java에서 변수는 프로그램에서 데이터를 저장하고 처리하는 기본적인 개념입니다. Java는 기본 데이터 타입과 참조 데이터 타입을 제공하며, 로컬 변수, 인스턴스 변수, 클래스 변수로 변수를 구분합니다. 변수의 범위는 선언된 위치에 따라 다르며, 변하지 않는 값은 상수로 선언할 수 있습니다. 변수를 적절히 선언하고 사용하는 것은 효율적인 코드 작성과 가독성을 높이는 중요한 요소입니다.