class Static{
public int a = 20;
static int b = 0;
}
public class Test{
public static void main(String[] args) {
int a = 10;
Static.b = a;
Static st = new Static();
System.out.println(Static.b++);
System.out.println(st.b);
System.out.println(a);
System.out.print(st.a);
}
}
키워드: static 변수, 후위연산자
static 변수는 static메모리에 별도 저장되기 때문에 일반적인 인스턴스 변수와는 다르게 프로그램 내 모든 객체와 공유된다.
후위연산자는 리턴 후 연산을 한다.
10
11
10
20
Static.b++의 경우 후위연산자 이기 때문에 리턴 후 연산. 따라서 값은 10
Static클래스의 객체 st를 통해 b값을 출력하는 st.b는 st가 선언되었을때의 Static.b와는 상관없이 바로 위 Static.b++ 연산까지 적용된 11이 출력된다.
반응형
'개발 > JAVA' 카테고리의 다른 글
| [Spring] @Autowired 의존성주입(DI) 세 가지 방법 - (0) | 2022.11.07 |
|---|---|
| [Spring] 스프링이란? 왜 레거시에서 spring boot를 쓰게된걸까? (2) | 2022.11.03 |
| [Java] 보조 스트림 (0) | 2022.08.20 |
| [Java] 입출력 스트림 (0) | 2022.08.16 |
| [Java] 컬렉션 프레임워크 - Map (0) | 2022.08.14 |