CODEDRAGON ㆍDevelopment/Java
static
- static 예약어
- static정의 형식
- http://codedragon.tistory.com/2482
- static변수(class 변수)
- static 메소드(클래스 메소드)
- http://codedragon.tistory.com/2605
static변수(class 변수)
- 인스턴스의 생성과 상관없이 초기화되는 변수
- 하나만 선언되는 변수
- static으로 선언되면 누구나 어디서든 접근 가능
- static변수 = class변수(인스턴스와 관계없이 클래스와 관계가 깊기 때문에)
static변수의 초기화 시점
- 인스턴스의 생성과 상관없이 초기화되는 변수
- JVM은 실행과정에서 필요한 클래스의 정보를 메모리에 로딩(Loading)하는데
- 바로 이 로딩 시점에서 static 변수가 초기화됩니다.
public class StaticCount {
static int count = 10; // static 변수
public StaticCount() { count++; } } | //클래스 정의 |
public class StaticEx01 {
public static void main(String[] args) { StaticCount sc1= new StaticCount(); StaticCount.count+=3; System.out.println(StaticCount.count); } | 1)main함수 호출 2)StaticCount인스턴스 생성시 StaticCount클래스를 정보를 JVM에 읽어 들이며 3)이때 static이라고 선언된 것은 메모리영역에 할당하고 초기화하게 됩니다. 4)그후 해당 클래스의 인스턴스 생성 |
static 변수의 접근방법
- 두가지 형태로 접근이 가능하며 어떠한 형태로 접근을 하든 접근의 내용에는 차이가 없습니다. 다만 접근하는 위치에 따라서 접근의 형태가 달라질 수 있습니다
- static변수에 대한 접근은 클래스 이름을 이용한 접근방법을 권장합니다. (인스턴스 이름을 통해 접근할 경우 인스턴스변수에 대한 접근인지 static변수에 대한 접근인지 구분하기 힘들기 때문입니다.)
인스턴스 이름을 이용한 접근방법 | StaticCount sc1= new StaticCount(); sc1.count++; |
클래스 이름을 이용한 접근방법(권장) | StaticCount.count+=3; |
public class StaticCount {
static int count = 10; // static 변수
public StaticCount() { count++; } } |
public class StaticEx01 {
public static void main(String[] args) { StaticCount sc1 = new StaticCount(); sc1.count++; StaticCount.count += 3; System.out.println(StaticCount.count); } } |
'Development > Java' 카테고리의 다른 글
Error-Exception in thread "main" java.lang.StackOverflowError (0) | 2017.02.09 |
---|---|
Serialization(객체의 직렬화) - 직렬화(serialization), 역직렬화(deserialization) (0) | 2017.02.01 |
WARNING-The assignment to variable money has no effect (0) | 2017.01.24 |
멀티 스레드(다중 스레드) (0) | 2016.12.26 |
Warning-GenericsEx is a raw type. References to generic type GenericsEx<T> should be parameterized (0) | 2016.12.20 |