자바
[Java] static 이란?
menuhwang
2022. 9. 30. 18:29
static 이란?
static 변수 = 정적 변수 = 클래스 변수 = 공용 변수
- 객체를 생성하지 않고도 static자원에 접근이 가능
- 자바에서 static 키워드를 사용한다는 것은 메모리에 한 번 할당되어 프로그램이 종료될 때 해제되는 것을 의미
인스턴스 변수 & 스태틱 변수 비교
인스턴스 변수
class Number {
int num = 0;
int add() {
return ++this.num;
}
}
public class Main {
public static void main(String[] args) {
Number num1 = new Number();
Number num2 = new Number();
num1.add();
System.out.println(num1.num) // 1
System.out.println(num2.num) // 0
}
이 경우 객체를 생성하면 각각의 메모리를 할당받기 때문에 add() 메서드를 실행시킨 객체의 메모리값만 변하게 된다.
스태틱 변수
- 메모리 절약의 이점
- 변수 값 공유
class Number {
static int num = 0;
int num2 = 0;
int add() {
return ++num;
}
int add2() {
return ++num2;
}
}
public class Main {
public static void main(String[] args) {
Number num1 = new Number();
Number num2 = new Number();
num1.add();
System.out.println(num1.num) // 1
System.out.println(num2.num) // 1
System.out.printlb(Number.num) // 1
}
}
스태틱 변수로 선언된 경우 객체를 생성하면 메모리값을 공유하게 된다.
따라서 여러 객체를 생성하고 add() 메소드 실행 시 변수는 같은 값을 갖는다.
인스턴스 메소드 & 스태틱 메소드
인스턴스 메소드
- 객체 생성 필요.
- 객체를 생성한 후 사용되기 때문에 메소드 내부에서 인스턴스 변수 및 스태틱 변수 사용 가능.
스태틱 메소드
- 정적메서드를 선언하면 객체를 생성하지 않고 메소드를 사용할 수 있다.
- 스태틱 메소드 안에서는 스태틱 변수만 접근할 수 있다.
- 유틸리티 메서드 작성에 많이 사용된다.