Jin's Dev Story

[JAVA] 정적 & 동적 본문

Programming Language/JAVA

[JAVA] 정적 & 동적

woojin._. 2023. 10. 20. 15:00

정적(static)

  • 한 번 정해놓으면 변하지 않고 계속 유지되는 성질

정적할당

  • 대체로 Stack 영역에 메모리를 할당

정적언어

  • 변수의 Type을 컴파일 시에 결정하는 것
  • Java, Kotlin, C 등의 언어
  • 변수에 넣을 데이터에 따라 자료형을 지정해주어야 함
  • 장점
    • 실행 시점에 어떤 메서드를 호출할지 알아내는 과정 필요 없이 메서드 호출이 빠름
    • 컴파일러가 프로그램 정확성을 검증하기 때문에 실행 프로그램이 오류로 중단될 가능성이 적음
    • 유지보수 쉬움
  • 단점
    • Type 설정을 해줘야 함

동적(dynamic)

  • 실시간으로 상황에 따라 변경이 가능한 것
  • ArrayList나 객체 즉, 동적 메모리 Heap에 생성되는 것들

동적할당

  • Heap 영역에 메모리를 할당

동적언어

  • 변수의 Type을 컴파일 실행 시에 결정
  • JavaScript, Python 등의 언어
  • 장점
    • 배우기 쉬움
    • RunTime까지 Type에 대한 결정을 미룰 수 있음
  • 단점
    • Type Error가 생길 확률이 큼