JAVA/이론
[JAVA] static 변수와 static 메소드
printf100
2019. 11. 27. 16:11
static 변수와 static 메소드는 static 메모리 영역에 존재합니다. (자바의 메모리 영역은 다음 글에서 다룹니다.)
객체가 생성되기 전에 이미 할당이 되어있기 때문에 객체 생성없이 바로 접근할 수 있습니다.
static 변수
-
클래스 변수 : 클래스가 정의만 되어도 접근이 가능한 변수
-
application이 실행되면 모두 메모리에 할당되고, 종료되면 삭제되는 변수
메모리 할당을 딱 한 번만 하게 되어 메모리 사용에 이점을 볼 수 있습니다.
또한, 해당 클래스에 의해 생성된 모든 객체에 의해 공유될 수 있습니다.
인스턴스 변수의 경우 ( non-static )
public class Test {
int num = 0;
public Test() {
num++;
System.out.println(num);
}
}
클래스 변수의 경우 ( static )
public class STest {
static int snum = 0;
public STest() {
snum++;
System.out.println(snum);
}
}
-> static으로 선언한 snum의 값이 공유되어 증가된 결과값이 나오게 되었습니다.
static 메소드
-
객체를 생성하지 않아도 호출할 수 있는 메소드
-
대표적으로 java.util.Math 가 있습니다.