| λ³€μˆ˜

μžλ°”μ—μ„œ λ³€μˆ˜λŠ” ν΄λž˜μŠ€λ³€μˆ˜, μΈμŠ€ν„΄μŠ€λ³€μˆ˜, μ§€μ—­λ³€μˆ˜ μ΄λ ‡κ²Œ 3가지 μ’…λ₯˜κ°€ μžˆλ‹€.

λ³€μˆ˜μ˜ μ’…λ₯˜λ₯Ό κ²°μ •ν•˜λŠ” μ€‘μš”ν•œ μš”μ†ŒλŠ” 'λ³€μˆ˜μ˜ μ„ μ–Έλœ μœ„μΉ˜'이닀.

λ©€λ²„λ³€μˆ˜λ₯Ό μ œμ™Έν•œ 것은 λͺ¨λ‘ μ§€μ—­λ³€μˆ˜,

λ©€λ²„λ³€μˆ˜ 쀑 static 이 뢙은 것은 ν΄λž˜μŠ€λ³€μˆ˜,

λ©€λ²„λ³€μˆ˜ 쀑 static 이 뢙지 μ•Šμ€ 것은 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ΄λ‹€.

γ…λ³€μˆ˜μ˜ μ’…λ₯˜

iv 와 cv λŠ” 클래슀 μ˜μ—­μ— μ„ μ–Έ λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ— λ©€λ²„λ³€μˆ˜μ΄λ‹€.

cv λŠ” static 이 λΆ™μ–΄μžˆκΈ° λ•Œλ¬Έμ— ν΄λž˜μŠ€λ³€μˆ˜μ΄κ³ ,

iv λŠ” static 이 λΆ™μ–΄μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€λ³€μˆ˜μ΄λ‹€.

lvλŠ” λ©”μ„œλ“œ μ˜μ—­μ— μ„ μ–Έλ˜μ–΄ 있기 λ•Œλ¬Έμ— μ§€μ—­λ³€μˆ˜μ΄λ‹€.

  1. μΈμŠ€ν„΄μŠ€λ³€μˆ˜ (instance variable)

μΈμŠ€ν„΄μŠ€λ³€μˆ˜λŠ” 독립적인 μ €μž₯곡간을 가지기 λ•Œλ¬Έμ— μ„œλ‘œ λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 μžˆλ‹€.

μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ κ³ μœ ν•œ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Όν•  경우, μΈμŠ€ν„΄μŠ€λ³€μˆ˜λ‘œ μ„ μ–Έν•œλ‹€.

  1. ν΄λž˜μŠ€λ³€μˆ˜ (class variable)

ν΄λž˜μŠ€λ³€μˆ˜λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅ν†΅λœ μ €μž₯곡간을 가진닀.

ν•œ 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λ“€μ΄ 곡톡적인 값을 μœ μ§€ν•΄μ•Όν•˜λŠ” 경우, ν΄λž˜μŠ€λ³€μˆ˜λ‘œ μ„ μ–Έν•œλ‹€.

  1. μ§€μ—­λ³€μˆ˜ (local variable)

λ©”μ„œλ“œ 내에 μ„ μ–Έλ˜μ–΄ λ©”μ„œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš©κ°€λŠ₯ν•˜κ³ , λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ‚¬μš©ν•  수 μ—†λ‹€.

for/while λ¬Έ 내에 μ„ μ–Έλ˜λ©΄, μ„ μ–Έλœ λΈ”λŸ­{ } λ‚΄μ—μ„œλ§Œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

| λ©”μ„œλ“œ

cμ–Έμ–΄μ—μ„œμ˜ ν•¨μˆ˜μ™€ λΉ„μŠ·ν•œ κ°œλ…μ΄λ‹€.

λ©”μ„œλ“œμ˜ μž₯점은

  1. 높은 μž¬μ‚¬μš©μ„±
  2. μ€‘λ³΅λœ μ½”λ“œμ˜ 제거
  3. ν”„λ‘œκ·Έλž¨μ˜ ꡬ쑰화 이닀.

https://blog.kakaocdn.net/dn/MAPCa/btqUseRQDzQ/8H8zxvnve2EjpLCw8HzpK1/img.png

λ”ν•˜κΈ° λ©”μ„œλ“œ

μœ„μ²˜λŸΌ λ©”μ„œλ“œλ₯Ό μ„ μ–Έν–ˆλ‹€λ©΄, int ans = add ( 1, 2 ) ; 와 같이 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.

| JVM의 λ©”λͺ¨λ¦¬ ꡬ쑰

https://blog.kakaocdn.net/dn/z7XaF/btqUmIGaaWJ/zH3xWMARMWBtXqKWJC9tPK/img.png

JVM 의 λ©”λͺ¨λ¦¬ ꡬ쑰

λ©”μ„œλ“œ μ˜μ—­

  • ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 μ–΄λ–€ ν΄λž˜μŠ€κ°€ μ‚¬μš©λ˜λ©΄, JVM은 ν•΄λ‹Ή 클래슀의 ν΄λž˜μŠ€νŒŒμΌμ„ 읽고 클래슀 데이터λ₯Ό λ©”μ„œλ“œμ˜μ—­μ— μ €μž₯ν•œλ‹€. 클래슀의 ν΄λž˜μŠ€λ³€μˆ˜κ°€ λ©”μ„œλ“œμ˜μ—­μ—μ„œ μƒμ„±λœλ‹€.

ν˜ΈμΆœμŠ€νƒ

  • ν˜ΈμΆœμŠ€νƒμ€ λ©”μ„œλ“œμ˜ μž‘μ—…μ— ν•„μš”ν•œ λ©”λͺ¨λ¦¬ 곡간을 μ œκ³΅ν•œλ‹€. λ©”μ„œλ“œκ°€ 호좜되면, ν˜ΈμΆœμŠ€νƒμ— 호좜된 λ©”μ„œλ“œλ₯Ό μœ„ν•œ λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλ˜κ³ , 이 λ©”λͺ¨λ¦¬λŠ” λ©”μ„œλ“œκ°€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λ™μ•ˆ μ§€μ—­λ³€μˆ˜λ“€κ³Ό μ—°μ‚°μ˜ 쀑간결과 등을 μ €μž₯ν•˜λŠ”λ° μ‚¬μš©λœλ‹€. λ©”μ„œλ“œκ°€ μž‘μ—…μ„ 마치면 ν• λ‹Ήλ˜μ—ˆλ˜ λ©”λͺ¨λ¦¬ 곡간을 λ°˜ν™˜λ˜μ–΄ λΉ„μ›Œμ§„λ‹€.

νž™

  • μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜λŠ” 곡간이닀. μΈμŠ€ν„΄μŠ€λ³€μˆ˜κ°€ νž™μ—μ„œ μƒμ„±λœλ‹€.

λ©”μ„œλ“œκ°€ 호좜되면 μˆ˜ν–‰μ— ν•„μš”ν•œ 만큼의 λ©”λͺ¨λ¦¬λ₯Ό μŠ€νƒμ— ν• λ‹Ήλ°›λŠ”λ‹€.

λ©”μ„œλ“œκ°€ μˆ˜ν–‰μ„ 마치고 λ‚˜λ©΄ λ©”λͺ¨λ¦¬λ₯Ό λ°˜ν™˜ν•˜κ³ , μŠ€νƒμ—μ„œ μ œκ±°λœλ‹€.

ν˜Έν’€μŠ€νƒμ˜ κ°€μž₯ μœ„μ— μžˆλŠ” λ©”μ„œλ“œκ°€ ν˜„μž¬ μ‹€ν–‰ 쀑인 λ©”μ„œλ“œμ΄λ‹€.

μ•„λž˜μ— μžˆλŠ” λ©”μ„œλ“œκ°€ λ°”λ‘œ μœ„μ˜ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ λ©”μ„œλ“œμ΄λ‹€.

| 클래슀 λ©”μ„œλ“œμ™€ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ

  1. 클래슀λ₯Ό 섀계할 λ•Œ, λ©€λ²„λ³€μˆ˜ 쀑 λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ— κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” κ²ƒμ—λŠ” static 을 뢙인닀.
  2. 클래슀 λ³€μˆ˜(static λ³€μˆ˜)λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ μ‚¬μš©ν•  수 μžˆλ‹€.
  3. 클래슀 λ©”μ„œλ“œ(static λ©”μ„œλ“œ)λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.
  4. λ©”μ„œλ“œ λ‚΄μ—μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, static 을 λΆ™μ΄λŠ” 것을 κ³ λ €ν•œλ‹€.

β–· 클래슀의 λ©€λ²„λ³€μˆ˜ 쀑 λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ— κ³΅ν†΅λœ 값을 μœ μ§€ν•΄μ•Όν•˜λŠ” 것이 μžˆλŠ”μ§€ 보고, μžˆλ‹€λ©΄ static 을 뢙인닀.

β–· μž‘μ„±ν•œ λ©”μ„œλ“œ μ€‘μ—μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”μ„œλ“œμ— static 뢙인닀.

https://blog.kakaocdn.net/dn/eshe3q/btqUsc7IBec/3q661JOfv6WTEqrsdhunw0/img.png

λ³€μˆ˜μ˜ μ’…λ₯˜ μ„ μ–Έμœ„μΉ˜ μƒμ„±μ‹œκΈ°
ν΄λž˜μŠ€λ³€μˆ˜ 클래슀 μ˜μ—­ ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ
μΈμŠ€ν„΄μŠ€λ³€μˆ˜ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ—ˆμ„ λ•Œ  
μ§€μ—­λ³€μˆ˜ 클래슀 μ˜μ—­ μ΄μ™Έμ˜ μ˜μ—­(λ©”μ„œλ“œ , μƒμ„±μž. μ΄ˆκΈ°ν™” λΈ”λŸ­ λ‚΄λΆ€) λ³€μˆ˜ 선언문이 μˆ˜ν–‰λ˜μ—ˆμ„ λ•Œ