(Java)JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

๐Ÿ“ŒJVM์ด๋ž€?

JVM์€ 'Java virtual machine'์„ ์ค„์ธ ๋ง๋กœ '์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ๋จธ์‹ ' ์ฆ‰ '๊ฐ€์ƒ ์ปดํ“จํ„ฐ'๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
'๊ฐ€์ƒ ์ปดํ“จํ„ฐ'๋Š” ์‹ค์ œ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•„๋‹Œ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„๋œ ์ปดํ“จํ„ฐ๋ผ๋Š” ๋œป์œผ๋กœ ์ปดํ“จํ„ฐ ์†์˜ ์ปดํ“จํ„ฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ด ๊ฐ€์ƒ ์ปดํ“จํ„ฐ(JVM)์—์„œ๋งŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ JVM์ด ํ•„์š”ํ•˜๋‹ค.

Java์™€ C์–ธ์–ด์˜ ๋น„๊ต

 

์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ฒ˜๋Ÿผ C์–ธ์–ด ๊ฐ™์€ ๊ฒฝ์šฐ OS๋งŒ ๊ฑฐ์น˜๊ณ  ํ•˜๋“œ์›จ์–ด๋กœ ๋ฐ”๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์— ๋ฐ˜ํ•ด JAVA๋Š” JVM์„ ํ•œ๋ฒˆ ๋” ๊ฑฐ์น˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ํ•˜๋“œ์›จ์–ด์— ๋งž๊ฒŒ ์™„์ „ํžˆ ์ปดํŒŒ์ผ๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๊ณ  ์‹คํ–‰ ์‹œ ํ•ด์„(interpret)๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.


๊ทธ๋Ÿฌ๋‚˜ ์š”์ฆ˜์—” ๋ฐ”์ดํŠธ์ฝ”๋“œ(์ปดํŒŒ์ผ๋œ ์ž๋ฐ” ์ฝ”๋“œ)๋ฅผ ํ•˜๋“œ์›จ์–ด์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ฐ”๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ์™€ ํ–ฅ์ƒ๋œ ์ตœ์ ํ™” ๊ธฐ์ˆ ์ด ์ ์šฉ๋˜์–ด์„œ ์†๋„์˜ ๊ฒฉ์ฐจ๋ฅผ ๋งŽ์ด ์ค„์˜€๋‹ค.

 

Java compiler

 

๋‘ ๋ฒˆ์งธ ์œ„์˜ ๊ทธ๋ฆผ์€ ์ž๋ฐ”๊ฐ€ OS์— ๋…๋ฆฝ์ ์ธ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์ด๋‹ค.

์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ OS์™€ ๋ฐ”๋กœ ๋งž๋‹ฟ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— OS์—์„œ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ทธ OS์— ๋งž๊ฒŒ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰ OS ์ข…์†์ ์ด๋ผ๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ž๋ฐ”์˜ ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ OS์˜ ์ค‘๊ฐ„ ๋‹จ๊ณ„์—์„œ ์†Œํ†ตํ•˜๋Š” JVM์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ OS์—์„œ๋„ ํ˜„์žฌ OS์— ๋งž๋Š” JVM์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณ€๊ฒฝ ์—†์ด ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰ OS์— ๋…๋ฆฝ์ ์ธ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด JVM์ด๋ž€ '๊ฐ€์ƒ ๋จธ์‹ '์œผ๋กœ ๋‚ด๋ถ€์ ์ธ ๋ณต์žกํ•œ ๊ตฌ์กฐ๋กœ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“ŒJVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

์ž๋ฐ”์—์„œ์˜ ์ „์ฒด์ ์ธ ์‹คํ–‰ ๊ณผ์ •์€ ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™๋‹ค.

์ด์ œ๋ถ€ํ„ฐ JVM์˜ ๊ตฌ์ฒด์ ์ธ ์‹คํ–‰๊ณผ์ •์„ ์•Œ์•„๋ณด์ž

 

JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

์šฐ์„  ์†Œ์ŠคํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๊ฒŒ๋˜๋ฉด Java Compiler์— ์˜ํ•ด .java์˜ ์†Œ์ŠคํŒŒ์ผ์ด JVM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ(Bytecode)๋กœ ์ด๋ฃจ์–ด์ง„ .classํŒŒ์ผ๋กœ ์ €์žฅ๋œ๋‹ค.

 

1) Class Loader

๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ž‘์„ฑ๋œ classํŒŒ์ผ์„ JVM๋‚ด๋กœ ๋กœ๋“œํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ , ์ด๋ ‡๊ฒŒ ๋กœ๋”ฉ๋œ class๋“ค์€ Runtime Data Area ๋ฐฐ์น˜๋œ๋‹ค. (์ด๋Ÿฌํ•œ ๋กœ๋“œ ๊ณผ์ •์€ ์šด์˜์ฒด์ œ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค)

2) Execution Engine

Class Loader์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ ํด๋ž˜์Šค์˜ Bytecode๋“ค์„ BinaryCode ์ฆ‰ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ช…๋ น์–ด ๋‹จ์œ„๋กœ ์‹คํ–‰ํ•œ๋‹ค.
๋ช…๋ น์–ด์˜ ์‹คํ–‰์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter) ๋ฐฉ์‹ ๋˜๋Š” JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐฉ์‹์ด ์žˆ๋‹ค. JIT ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
์ธํ„ฐํ”„๋ฆฌํŠธ ๋ฐฉ์‹์€ ์‹คํ–‰ ์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ฝ์–ด๊ฐ€๋ฉด์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€์‘ํ•˜๋Š” ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

3) Garbage Collector

Garbage Collector(GC)๋Š” Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ƒ์„ฑ(์ ์žฌ)๋œ ๊ฐ์ฒด๋“ค ์ค‘์— ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ํƒ์ƒ‰ ํ›„ ์ œ๊ฑฐํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

GC๊ฐ€ ์—ญํ• ์„ ํ•˜๋Š” ์‹œ๊ฐ„์€ ์ •ํ™•ํžˆ ์–ธ์ œ์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.

4) Runtime Data Area

JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ ์žฌํ•˜๋Š” ์˜์—ญ์ด๋‹ค.

์ด ์˜์—ญ์€ ํฌ๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜๋‰œ๋‹ค.

 

 4-1) Method area

  • Class area, Method area, Static area๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ํด๋ž˜์Šค๊ฐ€ ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ๊ณผ ์ƒ๊ด€์—†์ด jvm ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋กœ๋”ฉ๋œ๋‹ค. jvm ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ์ด ๋˜๋ฉด ๋ฉ”์„œ๋“œ ์˜์—ญ์— ํด๋ž˜์Šค์˜ ์ •๋ณด๋“ค์ด ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค.
  • Static ์˜์—ญ์˜ ์žฅ์ ์€ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ๊นŒ์ง€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์„œ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ์ ์€ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ Static์„ ๋‚จ๋ฐœํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์žก์•„๋จน๊ฒŒ ๋œ๋‹ค.
  • ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
  • ๋ฉ”์„œ๋“œ ์ •๋ณด ์ฆ‰ ๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋ฆฌํ„ด ํƒ€์ž…, ๋งค๊ฐœ๋ณ€์ˆ˜, ์ ‘๊ทผ์ œ์–ด์ž ๋“ฑ์˜ ์ •๋ณด ์ €์žฅ
  • ์ƒ์ˆ˜ ํ’€(Constant pool)
      1) Type์—์„œ ์‚ฌ์šฉ๋œ ์ƒ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ
      2) ๋ฌธ์ž ์ƒ์ˆ˜, ํƒ€์ž…, ํ•„๋“œ, Method reference๋„ ์ƒ์ˆ˜ ํ’€์— ์ €์žฅ
      3) final class ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ๋„ ์ƒ์ˆ˜ ํ’€์— ๊ฐ’ ๋ณต์‚ฌ
  • Static ๋ณ€์ˆ˜ ์ €์žฅ

4-2) Heap area

  • New์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๊ฐ์ฒด, ๋˜๋Š” ์ธ์Šคํ„ด์Šค์™€ ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ JVM์ด   ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
  • ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋œ ๊ฐ์ฒด ๋ฐ ๋ฐฐ์—ด์€ ์Šคํƒ ์˜์—ญ์˜ ๋ณ€์ˆ˜๋‚˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ•„๋“œ์—์„œ ์ฐธ์กฐํ•œ๋‹ค.
  • ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ์—์„œ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
  • ๊ฐ์ฒด๊ฐ€ ๋” ์ด์ƒ ์“ฐ์ด์ง€ ์•Š๊ฑฐ๋‚˜, ์ฐธ์กฐ๊ฐ€ ๋Š์–ด์ง„ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ Garbage Collector์—   ์˜ํ•ด ์ด ์˜์—ญ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค.

4-3) Stack area 

  • ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์Šคํƒ์— ํ• ๋‹น๋ฐ›๋Š”๋‹ค
  • ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ๋ฉ”์„œ๋“œ ์ •๋ณด, ์ง€์—ญ๋ณ€์ˆ˜(๋งค๊ฐœ๋ณ€์ˆ˜ ํฌํ•จ)๋“ค๊ณผ ์—ฐ์‚ฐ์˜ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ ๋“ฑ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜๋Š” ์Šคํƒ ์˜์—ญ์—์„œ ์ง์ ‘ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
  • ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด์˜ ํž™ ์˜์—ญ์˜ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ํž™ ์˜์—ญ์— ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค.
  • Last In First Out (LIFO) ๊ตฌ์กฐ๋กœ ํ˜ธ์ถœ ์Šคํƒ์˜ ์ œ์ผ ์œ„์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฉ”์„œ๋“œ์ด๊ณ  ์•„๋ž˜์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ”๋กœ ์œ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ์ด๋‹ค.

4-4) PC Register

  • Thread(์“ฐ๋ ˆ๋“œ)๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ์œผ๋กœ Program Counter ์ฆ‰, ํ˜„์žฌ   ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ถ€๋ถ„์˜ ์ฃผ์†Œ์™€ ๋ช…๋ น์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ์ด๋‹ค. (*CPU์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ ๋‹ค๋ฆ„)
  • ์ด๊ฒƒ์„ ์ด์šฉํ•ด์„œ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋Œ์•„๊ฐ€๋ฉด์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

4-5) Native method stack

  • ์ž๋ฐ” ์™ธ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค.

 


๐Ÿ“Reference

https://jeong-pro.tistory.com/148

 

JVM ๊ตฌ์กฐ์™€ ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ JVM์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ, ๊ณผ์ •

JVM(Java Virtual Machine) : ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์ฒด๋‹ค. CPU๋‚˜ ์šด์˜์ฒด์ œ(ํ”Œ๋žซํผ)์˜ ์ข…๋ฅ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์šด์˜์ฒด์ œ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋กœ ์ž

jeong-pro.tistory.com

https://limkydev.tistory.com/51

 

[Java] JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

์˜ค๋Š˜์€ ์ž๋ฐ” JVM์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์‚ฌ์‹ค JVM ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์™œ ์•Œ์•„์•ผํ• ๊นŒ? ์Šค์Šค๋กœ ์ž๋ฌธํ–ˆ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ •๋„?๋ผ๊ณ  ๋‹ต๋ณ€์„ ํ–ˆ๋‹ค. ์†Œ๊ทœ๋ชจํ”„๋กœ์ ํŠธ๋‚˜ ๊ฐ„๋‹จํ•œํ”„๋กœ๊ทธ๋žจ์„

limkydev.tistory.com

https://cafe.naver.com/jjdev/227

 

[18] ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

1. ๋ฉ”๋ชจ๋ฆฌํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ ๋ช…๋ น์–ด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„โ€ป ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ์ด์œ - ๊ฐ™์€ ๊ธฐ๋Šฅ์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ์ขŒ์šฐ๋จ.- ๋ฉ”๋ชจ๋ฆฌ ...

cafe.naver.com

 

'Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

(Java) Object toString()  (0) 2022.05.23
(Java) syntax error: insert } to complete ClassBody  (0) 2022.05.23
(Java) ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž &,&& ์™€ |,|| ์ฐจ์ด  (0) 2022.05.23
(Java)Scanner next(), nextLine ์ฐจ์ด  (0) 2022.05.06
(Java)Compiler  (0) 2022.05.06