728x90
728x90
static 변수(정적변수) : 정적변수를 갖고있는 클래스는 아무리 많은 객체를 만들어도 메모리에 딱 한번만 생성된다.
메서드 안의 지역변수는 static 사용 불가하다. 객체를 생성하지 않고도 사용가능하다. 객체가 아닌 클래스에 의존적인 요소.



은행 정보를 예로 들어보자.
이자율의 경우 모든 지점이 일괄적용될 수 있도록 static을 사용한다.

두개의 객체가 생성되었다.
number1 객체에 num1,num2
number2 객체에도 num1,num2가 존재할때
number1 객체에 1을 증가시키고 number2를 출력하면 결과는 어떨까?
number1의 num1=1
number1의 num2=1
number2의 num1=1
number2의 num2=0
number1 객체만 증가시켰는데 정적변수인 num1은 number2 객체에서도 같이 증가되었다.
static은 프로그램 시작시 메모리상에 한번만 올라가기 때문에
객체를 아무리 여러개 만들어도 static메모리 공간에 잡혀있는 값을 복사할 뿐이다.
그래서 정적변수 값을 한번만 바꾸면 어느 객체에서도 같은 값으로 일괄변경된다.
num2는 객체별로 만들어지는, 객체생성시 메모리에 올라가는 일반적인 변수이므로
num1과 다르게 객체별 값은 다를 수 있다. (number1의 num2≠number2의 num2)

728x90
'JAVA' 카테고리의 다른 글
[JAVA] 메서드 오버라이딩 (0) | 2023.08.25 |
---|---|
[JAVA] 상속, instanceof, super, final (0) | 2023.08.24 |
[JAVA] 생성자, 생성자 오버로딩 (0) | 2023.08.24 |
[JAVA] 메서드 오버로딩 (0) | 2023.08.23 |
[JAVA] 클래스와 메서드, setter와 getter, this (0) | 2023.08.23 |