TIL1

pepe·2025년 11월 5일

static

static 변수, 정적 변수, 클래스 변수
특정 클래스에서 공용으로 함께 사용할 수 있는 변수
멀티스레드 상황에서는 동시성이슈가 발생할 수 있다.
접근방법 클래스명.정적변수명
정적 변수는 인스턴스 영역(힙)이 아니라 메서드 영역에서 관리한다.

클래스는 흔히 붕어빵 틀에 비유하는데, 붕어빵이 구워지기 전(인스턴스 생성 전)에 틀은 하나 뿐이므로, 클래스 변수도 하나만 존재하는 것이다.
반면에 인스턴스 변수의 경우, 인스턴스가 생기는 만큼 존재할 수 있다.
(인스턴스 변수는 static이 붙지 않은 변수를 뜻함)

static이 정적인 이유

클래스 변수는 메서드 영역의 static 영역에 보관된다.

  1. 자바 프로그램을 실행하려면 클래스 정보가 필요
  2. 클래스파일을 읽음
  3. static 발견
  4. 메모리 할당

이렇게 프로그램 시작 시에 생성되고 종료될때 없어진다.
인스턴스 변수는 객체가 생성되고 객체가 사라질때 같이 사라진다.
따라서 static은 정적이라고 할 수 있다.

레퍼런스 변수에 값 할당과정

객체는 자신을 조종할 수 있는 리모콘(this)를 가지고 태어난다.
객체 만들 때 자동차 리모콘도 같이 만들어진다.
자동차 객체는 자신이 들고 있는 리모콘(this)를 복사해서 반환한다.

Car newCar = new Car();
profile
pepe

0개의 댓글