Language/JAVA

[JAVA] static의 μ˜λ―Έμ™€ μ‚¬μš©λ²•

κ΅ λ―Ό 2024. 8. 19. 09:44

 

πŸ“Œ static : '정적인' μ΄λΌλŠ” 뜻으둜, JAVAμ—μ„œ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œμ μ— λ§Œλ“€μ–΄μ§€κ³  ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μ‹œμ μ— μ œκ±°λœλ‹€λŠ” νŠΉμ§•μ— λΆ™μ—¬μ§„ 이름.

 

정적 멀버 : 정적 λ³€μˆ˜(ν•„μˆ˜) + 정적 λ©”μ„œλ“œ

 

정적 λ³€μˆ˜ (= 클래슀 λ³€μˆ˜, Static λ³€μˆ˜) : Static이 뢙은 멀버 λ³€μˆ˜
  • 정적 λ³€μˆ˜λŠ” μžλ°” ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•  λ•Œ λ”± 1개 λ§Œλ“€μ–΄μ§„λ‹€. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ λ‹€λ₯΄κ²Œ 보톡 μ—¬λŸ¬κ³³μ—μ„œ κ³΅μœ ν•˜λŠ” λͺ©μ μœΌλ‘œ μ‚¬μš©λœλ‹€.
  • ν΄λž˜μŠ€μ—μ„œ 곡용으둜 κ΄€λ¦¬ν•œλ‹€.
    • μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹Œ 클래슀λ₯Ό ν†΅ν•΄μ„œ μ ‘κ·Όν•˜λŠ” 것이 더 λͺ…ν™•ν•˜λ‹€.

 

정적 λ©”μ„œλ“œ (=클래슀 λ©”μ„œλ“œ) : Static이 뢙은 λ©”μ„œλ“œ
  • μΈμŠ€ν„΄μŠ€(객체) 생성 없이 ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ„œλ“œλ₯Ό 'ν΄λž˜μŠ€μ΄λ¦„.λ³€μˆ˜λͺ…'으둜 λ°”λ‘œ ν˜ΈμΆœν•  수 μžˆλ‹€.
    • μ°Έμ‘°κ°’μ˜ κ°œλ…μ΄ μ—†μŒ
  • 클래슀 λ‚΄λΆ€μ˜ κΈ°λŠ₯을 μ‚¬μš©ν•  λ•Œ, 정적 λ©”μ„œλ“œλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜, μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.
  • κ°„λ‹¨ν•œ λ©”μ„œλ“œ ν™œμš©μœΌλ‘œ λλ‚˜λŠ” μœ ν‹Έλ¦¬ν‹°μ„± λ©”μ„œλ“œμ— 자주 μ‚¬μš©ν•œλ‹€. (μœ ν‹Έλ¦¬ν‹°μ„± λ©”μ„œλ“œ)

 

 

πŸ‘ 정적 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œ νŠΉμ • λ©”μ„œλ“œλ₯Ό 자주 ν˜ΈμΆœν•΄μ•Όν•œλ‹€λ©΄,

Static import κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 클래슀 λͺ…을 μƒλž΅ν•˜κ³  λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€. 

 

 

βš™οΈ μžλ°”μ˜ λ©”λͺ¨λ¦¬ ꡬ쑰 βš™οΈ

μžλ°”μ˜ λ©”λͺ¨λ¦¬ κ΅¬μ‘°λŠ” 크게 λ§€μ„œλ“œ μ˜μ—­, μŠ€νƒ μ˜μ—­, νž™ μ˜μ—­ 3개둜 λ‚˜λˆŒ 수 μžˆλ‹€.

  • λ©”μ„œλ“œ μ˜μ—­ : ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ 곡톡 데이터λ₯Ό λ³΄κ΄€ν•œλ‹€.
    • 클래슀 정보
    • Static μ˜μ—­
    • 곡톡 λ¦¬ν„°λŸ΄ μƒμˆ˜
  • μŠ€νƒ μ˜μ—­ : μ‹€μ œ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” μ˜μ—­μœΌλ‘œ, λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ν•  λ•Œ λ§ˆλ‹€ ν•˜λ‚˜μ”© μŒ“μΈλ‹€.
    • λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ ν•˜λ‚˜μ˜ μŠ€νƒ ν”„λ ˆμž„μ΄ μŒ“μ΄κ³  λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ ν•΄λ‹Ή μŠ€ν… ν”„λ ˆμž„μ΄ μ œκ±°λœλ‹€.
      (μ •ν™•νžˆλŠ”, 각 μ“°λ ˆλ“œλ³„λ‘œ ν•˜λ‚˜μ˜ μ‹€ν–‰ μŠ€ν…μ΄ μƒμ„±λœλ‹€.)
  • νž™ μ˜μ—­ : 객체(μΈμŠ€ν„΄μŠ€)κ°€ μƒμ„±λ˜λŠ” μ˜μ—­. new λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ 이 μ˜μ—­μ„ μ‚¬μš©ν•œλ‹€. 
    • 더 이상 μ°Έμ‘°λ˜μ§€ μ•ŠλŠ” κ°μ²΄λŠ” GC에 μ˜ν•΄ μ œκ±°λœλ‹€.

βœ”οΈ  Static μ˜μ—­μ— ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λŠ” λͺ¨λ“  객체가 κ³΅μœ ν•˜μ—¬ ν•˜λ‚˜μ˜ 멀버λ₯Ό μ–΄λ””μ„œλ“ μ§€ μ°Έμ‘°ν•  수 μžˆλŠ” μž₯점을 κ°€μ§€μ§€λ§Œ GC의 관리 λ°–μ˜ μ˜μ—­μ— μ‘΄μž¬ν•˜κΈ°μ— Static μ˜μ—­μ— μžˆλŠ” 멀버듀은 ν”„λ‘œκ·Έλž¨μ˜ μ’…λ£Œμ‹œκΉŒμ§€ λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλœ μ±„λ‘œ μ‘΄μž¬ν•˜κ²Œ λ˜λ―€λ‘œ κΌ­ ν•„μš”ν•œ κ²½μš°μ—λ§Œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€.