현제의 현재이야기
[JAVA] JAVA Static과 Python global과의 차이점 본문
코드 출처: 점프 투 자바
class Counter {
static int count = 0;
Counter() {
count++; // count는 더이상 객체변수가 아니므로 this를 제거하는 것이 좋다.
System.out.println(count); // this 제거
}
}
public class Sample {
public static void main(String[] args) {
Counter c1 = new Counter();
Counter c2 = new Counter();
}
}
자바 공부를 하다가 static이라는 개념이 나오길래 생소해서 찾아봄
자바의 static 변수와 파이썬의 전역변수는 비슷한 개념이지만 몇 가지 차이점이 있다.
자바에서 static 변수는 해당 클래스에 속한 모든 객체가 공유하는 변수이다. 이는 파이썬의 전역변수와 비슷하다. 즉, 한 번 초기화하면 클래스 내 모든 인스턴스에서 동일한 값을 갖게 된다. 또한, static 변수는 클래스 이름으로 직접 접근할 수 있다.(객체로 접근하지 않아도 된다.)
반면에, 파이썬에서의 전역변수는 모듈 전체에서 공유되는 변수이다. 이 변수는 해당 모듈이 임포트될 때 초기화된다. 파이썬에서는 전역변수를 선언하지 않고 사용할 수 있으며 이 경우 해당 변수는 자동으로 전역변수로 간주된다. 또한, 전역변수는 모듈 이름으로 직접 접근할 수 있다.
즉, 위 코드를 실행하면
1
2
가 되는데, 이유는 서로 다른 Counter 객체 c1, c2가 선언되었어도 생성자 Count()에서 불러온 count는 static 변수이기 때문에 다른 객체 사이에서도 공유가 된다. 하지만 파이썬의 전역변수는 한 클래스 내의 개념이라기 보다는 모듈 전체(.py)에서 공유되기 때문에 비슷한 개념이지만 더 큰 범위이다.
'JAVA' 카테고리의 다른 글
[spring] FetchType에 대하여 (0) | 2023.04.13 |
---|---|
[Spring] null 값 처리와 HTTP response (0) | 2023.04.07 |
[JAVA SPRING] 0314 TIL (0) | 2023.03.14 |
기초문법 1일차 (0) | 2023.03.08 |
JAVA 기본 문법 저장용 (0) | 2022.07.22 |
Comments