๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“— Book19

6-3์žฅ ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ ไธ‹ (3.7 ~ 3.12) 7. JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ * cv๋Š” ํด๋ž˜์Šค ๋ณ€์ˆ˜, lv๋Š” ์ง€์—ญ ๋ณ€์ˆ˜, iv๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค. ๋ฉ”์„œ๋“œ ์˜์—ญ (method area) ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉด, JVM์€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ํŒŒ์ผ(*.class)์„ ์ฝ์–ด์„œ ๋ถ„์„ํ•˜์—ฌ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ(ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ)๋ฅผ ์ด๊ณณ์— ์ €์žฅํ•œ๋‹ค. ์ด ๋–„, ๊ทธ ํด๋ž˜์Šค์˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜(class variable)๋„ ์ด ์˜์—ญ์— ํ•จ๊ป˜ ์ƒ์„ฑ๋œ๋‹ค. ํž™ (heap) ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณต๊ฐ„. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์ธ์Šคํ„ด์Šค๋Š” ๋ชจ๋‘ ์ด๊ณณ์— ์ƒ์„ฑ๋œ๋‹ค. ์ฆ‰, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(instance variable)๋“ค์ด ์ƒ์„ฑ๋˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. ํ˜ธ์ถœ์Šคํƒ (call stack ๋˜๋Š” execution stack) ๋ฉ”์„œ๋“œ์˜ ์ž‘์—…์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•œ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด, ํ˜ธ์ถœ.. 2023. 4. 18.
6-3์žฅ ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ ไธŠ (3.1 ~ 3.6) 1. ์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜ ๐Ÿ’ก๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋ฅผ ๊ฒฐ์ •์ง“๋Š” ์ค‘์š”ํ•œ ์š”์†Œ๋Š” '๋ณ€์ˆ˜์˜ ์„ ์–ธ๋œ ์œ„์น˜'์ด๋ฏ€๋กœ ๋ณ€์ˆ˜๊ฐ€ ์–ด๋А ์˜์—ญ์— ์„ ์–ธ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”!! ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋Š” 3๊ฐ€์ง€์ด๋‹ค. 1. ํด๋ž˜์Šค ๋ณ€์ˆ˜: ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ค‘ static์ด ๋ถ™์€ ๋ณ€์ˆ˜ 2. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜: ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ค‘ static์ด ๋ถ™์ง€ ์•Š์€ ๋ณ€์ˆ˜ 3. ์ง€์—ญ ๋ณ€์ˆ˜: ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ณ€์ˆ˜ iv์™€ cv๋Š” ํด๋ž˜์Šค ์˜์—ญ์— ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ด๊ณ  ์ด ์ค‘ static์ด ๋ถ™์€ cv๋Š” ํด๋ž˜์Šค ๋ณ€์ˆ˜, ๋ถ™์ง€ ์•Š์€ iv๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์ด๋‹ค. ๋ฉ”์„œ๋“œ์ธ method()์˜ ๋‚ด๋ถ€, ์ฆ‰ '๋ฉ”์„œ๋“œ ์˜์—ญ'์— ์„ ์–ธ๋œ lv๋Š” ์ง€์—ญ๋ณ€์ˆ˜์ด๋‹ค. ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜์™€ ํŠน์ง• ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ (instance variable) - ํด๋ž˜์Šค ์˜์—ญ์— ์„ ์–ธ๋˜๋ฉฐ, ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ .. 2023. 4. 4.
6-2์žฅ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด 6-1์žฅ ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋Š” ๊ฐ€๋ณ๊ฒŒ ์ฝ์–ด๋ณด๋ฉด ์ข‹์„ ๋‚ด์šฉ์ด๋ผ ์ •๋ฆฌ๋Š” ์ƒ๋žตํ–ˆ๋‹ค. 1. ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜์™€ ์šฉ๋„ ํด๋ž˜์Šค ์ •์˜: ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•ด ๋†“์€ ๊ฒƒ, ๊ฐ์ฒด์˜ ์„ค๊ณ„๋„ ๋˜๋Š” ํ‹€ ์šฉ๋„: ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค์— ์ •์˜๋œ๋Œ€๋กœ ์ƒ์„ฑ๋œ๋‹ค. ๊ฐ์ฒด ์ •์˜: ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ. ์‚ฌ๋ฌผ ๋˜๋Š” ๊ฐœ๋… ์šฉ๋„: ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ธฐ TV์„ค๊ณ„๋„(ํด๋ž˜์Šค)๋Š” TV๋ผ๋Š” ์ œํ’ˆ(๊ฐ์ฒด)์„ ์ •์˜ํ•œ ๊ฒƒ ์ด๋ฉฐ. TV(๊ฐ์ฒด)๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ํด๋ž˜์Šค๋Š” ๋‹จ์ง€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ๋ฟ, ๊ฐ์ฒด ๊ทธ ์ž์ฒด๋Š” ์•„๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ด ์„ ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค. 2. ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค ๐Ÿ’กํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ.. 2023. 3. 29.
5-3์žฅ ๋‹ค์ฐจ์› ๋ฐฐ์—ด 1. 2์ฐจ์› ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ธ๋ฑ์Šค ex) 4ํ–‰ 3์—ด์˜ ๋ฐ์ดํ„ฐ int[][] data = new int[4][3]; ๋ฐฐ์—ด์š”์†Œ์˜ ํƒ€์ž…์ธ int์˜ ๊ธฐ๋ณธ ๊ฐ’ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. 2์ฐจ์› ๋ฐฐ์—ด์˜ index score[0][0] ~ score[3][2]๊นŒ์ง€ ์ด 4x3(12)๊ฐœ์˜ ๊ณต๊ฐ„์ด ๋งˆ๋ จ๋œ๋‹ค. 2. 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™” int[][] arr = new int[][]{{1, 2, 3}, {4, 5, 6}}; int[][] arr = {{1, 2, 3}, {4, 5, 6}}; int[][] arr = { {1, 2, 3}, {4, 5, 6} } ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณด๊ธฐ int[][] score = { {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40}, {50, 50, 50}.. 2023. 3. 29.
5-2์žฅ String๋ฐฐ์—ด 1. String๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ String[] name = new String[3]; 3๊ฐœ์˜ Stringํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์ด ๋งˆ๋ จ๋˜๊ณ  ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ ๊ฐ’์€ null์ด๋ฏ€๋กœ ๊ฐ ์š”์†Œ์˜ ๊ฐ’์€ null๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. * null์€ ์–ด๋– ํ•œ ๊ฐ์ฒด๋„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๋œป - ๋ณ€์ˆ˜์˜ ํƒ€์ž…์— ๋”ฐ๋ฅธ ๊ธฐ๋ณธ ๊ฐ’ 2. String๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™” String[] name = new String[] {"Kim", "Park", "Yi"}; String[] name = {"Kim", "Park", "Yi"}; // new String[] ์ƒ๋žต ๊ฐ€๋Šฅ ํŠน๋ณ„ํžˆ Stringํด๋ž˜์Šค๋งŒ “Kim”๊ณผ ๊ฐ™์ด ํฐ ๋”ฐ์˜ดํ‘œ๋งŒ์œผ๋กœ ๊ฐ„๋ฝํžˆ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ๋‹ค. ์›๋ž˜ String์€ ํด๋ž˜์Šค์ด๋ฏ€๋กœ new์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ.. 2023. 3. 29.
5-1์žฅ ๋ฐฐ์—ด 1. ๋ฐฐ์—ด์ด๋ž€? ๐Ÿ’ก ๊ฐ™์€ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ ๊ฐ ์ €์žฅ ๊ณต๊ฐ„์ด ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ๋‹ค. 2. ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ ๋ฐฐ์—ด์˜ ์„ ์–ธ ๋ฐฉ๋ฒ• 1. ํƒ€์ž…[ ] ๋ณ€์ˆ˜์ด๋ฆ„; → int [ ] score; 2. ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„[ ]; → int score [ ]; ⇒ 1๋ฒˆ์„ ์„ ํ˜ธ! ๋Œ€๊ด„ํ˜ธ๊ฐ€ ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ์ผ๋ถ€๋ผ๊ธฐ ๋ณด๋‹ค๋Š” ํƒ€์ž…์˜ ์ผ๋ถ€๋ผ๊ณ  ๋ณด๊ธฐ ๋•Œ๋ฌธ. ๋ฐฐ์—ด์˜ ์ƒ์„ฑ ๐Ÿ’ก ํƒ€์ž…[ ] ๋ณ€์ˆ˜์ด๋ฆ„; → ๋ฐฐ์—ด์„ ์„ ์–ธ(๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ์„ ์–ธ) ๋ณ€์ˆ˜์ด๋ฆ„ = new ํƒ€์ž…[๊ธธ์ด]; → ๋ฐฐ์—ด์„ ์ƒ์„ฑ(์‹ค์ œ ์ €์žฅ ๊ณต๊ฐ„์„ ์ƒ์„ฑ) int[] score; // intํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ score ์„ ์–ธ score = new int[5]; // intํƒ€์ž…์˜ 5๊ฐœ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด int[] score .. 2023. 3. 29.