질문했던 내용
변수 의 역할 궁금한 내용 :
이번 자바를 배우는 시간에 Static 변수에 대한 정보를 배웠다.
static 변수는 class 변수라고도 하며 클래스가 언로딩 되거나 JVM이 종료될 때 사라진다.
Instance 변수는 new 명령어로 생성되며 Garbage collecter 가 실행되거나 JVM이 종료될 때 사라진다.
Local 변수는 메소드 내에서 생성되며 메소드가 종료되면 사라진다. (메소드 내부에서만 유효)
각 변수에 대해 더 자세히 알아보고싶어서 GPT를 통해 더 알아보았다.
정확한 용어와 설명 (GPT답변)
Static 변수 (Class 변수):
클래스 내에 선언된 변수로, 해당 클래스의 모든 인스턴스들이 공유하는 변수이다.
클래스 이름을 통해 접근하며, 객체를 생성하지 않고도 사용할 수 있다.
인스턴스 변수 (Instance 변수):
클래스 내에 선언된 변수로, 객체(인스턴스)를 생성할 때마다 각각의 인스턴스에 속하는 변수이다.
각 인스턴스마다 고유한 값을 가지며, 인스턴스를 통해 접근한다.
로컬 변수 (Local 변수):
메소드, 생성자, 블록 등에서 선언된 변수로, 해당 블록 내에서만 유효한 변수이다.
메소드 내부에서 선언된 변수나 메소드의 매개변수가 로컬 변수의 예시이다.
로컬 변수는 해당 블록이 실행되는 동안에만 사용될 수 있다.
요약
Static 변수는 클래스 내에서 공유되는 변수이며, 클래스 이름을 통해 접근할 수 있다.
인스턴스 변수는 객체(인스턴스)마다 고유한 값을 가지며, 인스턴스를 통해 접근된다.
로컬 변수는 메소드, 생성자, 블록 등에서 선언되며, 해당 블록 내에서만 사용될 수 있다.
코드 예시 (GPT 답변)
public class VariableExample {
static int staticVariable; // static 변수
public static void main(String[] args) {
int localVar = 10; // 로컬 변수
VariableExample instance = new VariableExample();
instance.instanceVariable = 20; // 인스턴스 변수
System.out.println("staticVariable: " + VariableExample.staticVariable);
System.out.println("localVar: " + localVar);
System.out.println("instanceVariable: " + instance.instanceVariable);
}
int instanceVariable; // 인스턴스 변수
}
위의 코드에서는 세 가지 변수 유형을 함께 사용하는 예제.
- staticVariable은 static 변수로 클래스 수준에서 선언되었다.
- localVar은 main 메소드 내에서 선언된 로컬 변수이다.
- instanceVariable은 VariableExample 클래스의 인스턴스 변수로,
객체가 생성될 때마다 해당 객체에 속하는 변수이다.
main 메소드에서는 localVar에 10을 할당하고 출력
instance라는 VariableExample 객체를 생성 후,
instanceVariable에 20을 할당.
이후 System.out.println을 사용하여 staticVariable, localVar, instanceVariable의 값을 출력
출력 결과는 다음과 같다:
staticVariable: 0 (기본값)
localVar: 10
instanceVariable: 20
- staticVariable은 기본값인 0이 출력된다.
static 변수는 클래스 수준에서 공유되며, 값이 초기화되지 않았을 때 기본값으로 설정된다. - localVar에 할당된 10이 출력된다. 로컬 변수는 해당 블록 내에서만 유효하므로 메소드 실행이 끝나면 사라진다.
- instanceVariable에 할당된 20이 출력된다.
인스턴스 변수는 객체마다 고유한 값을 가지며, 객체가 소멸할 때 함께 소멸된다.
이를 통해 하나의 코드에서 static 변수, 로컬 변수, 인스턴스 변수 각각의 특징을 확인할 수 있다.