객체지향프로그래밍에서 static 변수와 non-static 변수는 중요한 개념이다. 두 가지는 사용 방법과 동작이 다르다.
static 변수는 클래스에 속하며 클래스의 모든 인스턴스가 공유하는 변수다. static 변수는 클래스 수준에서 선언되고 클래스가 로드될 때 초기화되며 프로그램이 종료될 때까지 존재한다. 클래스의 모든 인스턴스가 동일한 static 변수를 공유하며, static 변수의 값을 변경하면 그 변경 사항이 클래스의 모든 인스턴스에 반영된다. static 변수는 한 번만 메모리에 할당되므로 메모리 사용량을 줄일 수 있다. static 변수는 클래스명.변수명 형식으로 접근하며 객체를 생성하지 않고도 접근할 수 있다.
non-static 변수는 인스턴스 변수로, 각 인스턴스마다 별도로 존재하는 변수다. non-static 변수는 인스턴스 수준에서 선언되며 객체를 생성할 때마다 초기화된다. non-static 변수는 각 인스턴스마다 독립적인 값을 가지며, 한 인스턴스에서 non-static 변수 값을 변경해도 다른 인스턴스에는 영향을 주지 않는다. 각 인스턴스마다 별도로 메모리를 사용하므로 인스턴스가 많아지면 메모리 사용량이 증가할 수 있다. non-static 변수는 객체명.변수명 형식으로 접근하며 객체를 생성해야만 접근할 수 있다.
다음은 static 변수와 non-static 변수를 사용하는 간단한 예제다:
```java
public class Example {
// static 변수
public static int staticVariable = 0;
// non-static 변수
public int instanceVariable = 0;
public static void main(String[] args) {
// static 변수는 클래스명으로 접근
Example.staticVariable = 5;
// 인스턴스를 생성하여 non-static 변수에 접근
Example obj1 = new Example();
Example obj2 = new Example();
obj1.instanceVariable = 10;
obj2.instanceVariable = 20;
System.out.println("Static Variable: " + Example.staticVariable); // 출력: 5
System.out.println("Object 1 Instance Variable: " + obj1.instanceVariable); // 출력: 10
System.out.println("Object 2 Instance Variable: " + obj2.instanceVariable); // 출력: 20
}
}
```
이 예제에서 staticVariable은 클래스 Example의 모든 인스턴스가 공유하는 변수다. 반면 instanceVariable은 각 인스턴스마다 별도로 존재한다. obj1과 obj2는 서로 다른 값을 가지지만, staticVariable은 모든 인스턴스에서 동일한 값을 공유한다. 이처럼 static 변수는 클래스 전체에 걸쳐 공유되고, non-static 변수는 각 인스턴스마다 고유한 값을 가진다. 이러한 차이를 이해하고 적절히 사용하는 것이 객체지향프로그래밍에서 중요하다.
'Computer Science' 카테고리의 다른 글
[객체지향프로그래밍] java의 Getter, setter에 대하여 (0) | 2024.06.14 |
---|---|
[객체지향프로그래밍] static 멤버 안에서 this 변수를 사용할 수 없는 이유 (0) | 2024.06.13 |
[객체지향프로그래밍] JAVA의 garvage collection 개념 (0) | 2024.06.05 |
[객체지향프로그래밍] 절차적 언어 vs 객체지향 언어의 특징 (0) | 2024.06.05 |
[자료구조] Text pattern matching- Naive Approach 방법, 코드 구현 (0) | 2024.06.04 |