기록

[JAVA] 정적 멤버와 static 본문

[Study]/프로그래밍 언어

[JAVA] 정적 멤버와 static

Dannnnnn 2018. 9. 9. 17:12
반응형

정적 멤버(static member)는 클래스 당 하나만 생성되어서 모든 객체가 이것을 공유하게 된다.

(모든 사람이 하나의 변수를 공유하는 느낌)


클래스의 멤버는 인스턴스 멤버와 정적 멤버로 나누어진다.


정적 변수는 모든 객체에 공통인 변수이며, 하나의 클래스에 하나만 존재!!

static 변수

  • 정적 변수는 하나의 클래스에 하나만 존재한다. (그 클래스의 모든 객체들에 의하여 공유된다.)
  • 메모리에 생성되는 시점: byte code가 메모리에 로딩되면서 문제없을 경우 메모리에 자동 생성된다.(메소드 영역)
  • 효과
    • 공유: lastname을 static 변수로 두면 이 변수는 클래스의 모든 객체에 의하여 공유된다. (같은 메모리 주소 값을 바라본다)
    • 메모리 절약: lastname을 static 변수로 두면 java는 메모리 할당을 한번만 하게 되어 메모리 사용에 이점을 볼 수 있다.

static 메소드

  • 객체가 생성되지 않은 상태에서 호출되는 메소드. 객체안에서만 존재하는 인스턴스 변수 및 메소드들을 내부에서 사용할 수 없다.
  • 메소드 내부에서는 정적, 지역 변수만을 사용한다. (this 키워드도 인스턴스 변수이므로 사용 불가)
  • 인스턴스 변수에 따라 행동이 달라지지 않기 때문에 인스턴스나 객체가 필요하지 않고, 클래스명만 있어도 된다. (일반 메소드를 사용할 때는 레퍼런스 변수를 사용한다.)
  • static 메소드와 API: Util 클래스의 getCurrentDate메소드는 static 메소드.



반응형

'[Study] > 프로그래밍 언어' 카테고리의 다른 글

[C++] 문자열 자르기 (strtok)  (0) 2020.06.04
[C#] 프로퍼티  (0) 2018.10.17
[JAVA] 싱글톤(Singleton) 패턴  (0) 2018.09.09