Search
Duplicate
๐Ÿ˜€

05. Array, Class

ํƒœ๊ทธ
Array
Array - ๋ฐฐ์—ด์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” Reference Type์ด๋‹ค. - type[] ๋ณ€์ˆ˜๋ช…; or type ๋ณ€์ˆ˜๋ช…[]; - []์˜ ์œ„์น˜๋Š” ์ƒ๊ด€์—†์œผ๋‚˜ ๊ฐ€๊ธ‰์  type ๋ฐ”๋กœ ๋’ค์— ๋ถ™์—ฌ์„œ ๋ฐฐ์—ดํ˜์ž„์„ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ํ‘œ์‹œํ•œ๋‹ค. ๋ฐฐ์—ด๊ณผ Data Type int a a์˜ Type : int int[] arr arr์˜ Type : int ๋ฐฐ์—ด arr์ด ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ Type : int ๋ฐฐ์—ด์˜ ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™” - new ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๋ฐฐ์—ด์˜ Data type, ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. (New data_type[length]) - int[] arr = new int[4]; (intํ˜• Data๋ฅผ 4๊ฐœ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” arr ๋ฐฐ์—ด ์„ ์–ธ) - int[] arr = {1,2,3,4}; (intํ˜• ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”)
Arrays Class & Array ๊ด€๋ จ ์ฃผ์š” ํ•จ์ˆ˜
java.util.Arrays - ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ utility๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Arrays.toString() - ๋ฐฐ์—ด์˜ ๊ฐ’์„ ํŽธํ•˜๊ฒŒ ์ถœ๋ ฅํ•ด์ค€๋‹ค. - ๋ฐฐ์—ด์„ ๊ทธ๋ƒฅ ์ถœ๋ ฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด(ex. print(arr)) ๋ฐฐ์—ด ์•ˆ์˜ ๊ฐ’์ด ์•„๋‹Œ Reference ์ฐธ์กฐ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค. ํ•˜์ง€๋งŒ toString์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. (debug์šฉ๋„ ๅคš) Arrays.deepToString() - 2์ฐจ์› ๋ฐฐ์—ด ์ด์ƒ์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ๋”ฐ๋ผ๊ฐ€์„œ ๋‚ด๋ถ€ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) - ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. (๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜์—ฌ ๋” ํฐ ์‚ฌ์ด์ฆˆ์˜ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๋•Œ) - src : ๋ณต์‚ฌํ•˜๊ณ ์ž ํ•˜๋Š” ์›๋ณธ ๋ฐฐ์—ด - srcPos : ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•˜๋Š” ์œ„์น˜ (์ฒ˜์Œ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•˜๋ ค๋ฉด 0) - dest : ๋ณต์‚ฌํ•˜๋ ค๋Š” ๋Œ€์ƒ - desPos : ์–ด๋””๋ถ€ํ„ฐ ์“ธ ๊ฒƒ์ธ์ง€ ์œ„์น˜ - length : ๋ณต์‚ฌํ•  ๊ธธ์ด
๋‹ค์ฐจ์› ๋ฐฐ์—ด
Array of Array ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ€ ๋˜๋‹ค๋ฅธ ๋ฐฐ์—ด์ด๋‹ค. (๋ฐฐ์—ด ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ชจ์•„ ๋‹ค์‹œ ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌ) int[][] arr; โ‡’ int[]์„ ์›์†Œ๋กœ ๊ฐ€์ง€๋Š” 1์ฐจ์› ๋ฐฐ์—ด int์˜ 2์ฐจ์› ๋ฐฐ์—ด ๋ฐฐ์—ด์˜ ๊ฐ์ฒด ์ˆ˜ (์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ) - Java์—์„œ ๋ฐฐ์—ด์€ Reference Type์˜ ๊ฐ์ฒด์ด๋‹ค. - ๋”ฐ๋ผ์„œ ๋‹ค์ฐจ์›๋ฐฐ์—ด์—์„œ ๊ฐ์ฒด์˜ ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒฝ์šฐ data์˜ ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด์˜ ์ˆ˜๋ฅผ ํ†ตํ•ด ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค. ex) int[][] teams = new int[2][3][4]; 1. int[][]๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” 2 size์˜ ๊ฐ์ฒด๊ฐ€ 1๊ฐœ ์กด์žฌ 2. int[]๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” 3 size์˜ ๊ฐ์ฒด๊ฐ€ 2๊ฐœ ์กด์žฌ 3. int๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” 4 size์˜ ๊ฐ์ฒด๊ฐ€ 6๊ฐœ ์กด์žฌ
๋‹ค์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ์‹œ์˜ ์ฃผ์˜์ !
๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์„ ์–ธ ์‹œ ๋’ค์ชฝ์˜ Size๋Š” ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค! ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ชจ๋‘ ์„ ์–ธํ•œ ๋‹ค์Œ ํ•˜์œ„ ์ฐจ์›์˜ ๋ฐฐ์—ด์„ ํ†ตํ•ด ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๊ฐฑ์‹ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด์˜ ์ฐธ์กฐ๊ฐ’์„ ๋ฐ”๊พธ๊ฒŒ ๋œ๋‹ค. โ‡’ ์ฆ‰, ์ดˆ๊ธฐ ์„ ์–ธ์‹œ์— ๋งŒ๋“ค์–ด๋‘” ๊ฐ์ฒด๋Š” ์“ธ๋ชจ์—†๋Š” ๊ฐ€๋น„์ง€๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ๋ฒ• int[ ][ ] years = new int[4][ ];
1์ฐจ์› ๊ฐ์ฒด ๋ฐฐ์—ด์„ ํ†ตํ•œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด
Order Class - ๋ฉค๋ฒ„ : ์ฃผ๋ฌธ๋ฒˆํ˜ธ, ๋‚ ์งœ, ์ฃผ๋ฌธ์ž, ๊ตฌ๋งค ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ - ์ฃผ๋ฌธ์ž์™€ ๊ตฌ๋งค ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ Class์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ex) 10๊ฐœ์˜ ์ฃผ๋ฌธ์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ณต์žกํ•œ ๊ตฌ์กฐ์˜ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ๋ณต์žกํ•œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ 1์ฐจ์› ๊ฐ์ฒด ๋ฐฐ์—ด์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. โ‡’ 1์ฐจ์› ๊ฐ์ฒด ๋ฐฐ์—ด์„ ํ†ตํ•œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ํšจ๊ณผ!
Class์™€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
ํ˜„์‹ค ๊ฐ์ฒด, ํด๋ž˜์Šค, ํ”„๋กœ๊ทธ๋žจ ๊ฐ์ฒด์˜ ๊ด€๊ณ„ - ํ˜„์‹ค ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์€ ์ถ”์ƒํ™”(abstraction) ๋˜์–ด ํด๋ž˜์Šค์— ์ •์˜๋œ๋‹ค. - ํด๋ž˜์Šค๋Š” ๊ตฌ์ฒดํ™”๋˜์–ด ํ”„๋กœ๊ทธ๋žจ ๊ฐ์ฒด (Instance, object)๊ฐ€ ๋œ๋‹ค. - ๊ฐ™์€ ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฐ์ฒด์ด๋‹ค. ใ„ด ๊ฐ™์€ ์†์„ฑ๊ณผ method๋ฅผ ์ง€๋‹ˆ์ง€๋งŒ, ๊ฐ์ž์˜ ๊ณ ์œ ํ•œ ์ƒํƒœ๊ฐ’์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ! ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์  - ๋ธ”๋ก ํ˜•ํƒœ์˜ ๋ชจ๋“ˆํ™”๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ใ„ด ์‹ ๋ขฐ์„ฑ ๋†’์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (์ด๋ฏธ ๊ฒ€์ฆ๋จ) ใ„ด ์ถ”๊ฐ€ / ์ˆ˜์ • / ์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•˜๋‹ค. ใ„ด ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๋‹ค. ใ„ด ์œ ์ง€๋ณด์ˆ˜์˜ ๊ฐ•์ ์ด ์žˆ๋‹ค.
String ๊ฐ์ฒด์™€ ๋ฌธ์ž์—ด ์ƒ์ˆ˜ Pool
String์˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ• 2๊ฐ€์ง€ (๋ชฉ์ ์— ๋”ฐ๋ผ ์‚ฌ์šฉ) 1. Literal ํ‘œ๊ธฐ์— ์˜ํ•œ String ์ƒ์„ฑ (๋‹จ์ˆœ String ์ƒ์„ฑ) 2. new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•œ String ์ƒ์„ฑ (์ธ์ฝ”๋”ฉ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ, char[]์„ ํ†ตํ•œ String ์ƒ์„ฑ ๋“ฑ) Literal ํ‘œ๊ธฐ์— ์˜ํ•œ String ์ƒ์„ฑ - String s = "hello"; - Primitive Data Type๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ฐ’์„ ๋ฐ”๋กœ ์ง‘์–ด๋„ฃ๋Š”๋‹ค. - ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ์ด ์•Œ์•„์„œ ๊ฐ์ฒด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์ง€, ์›์‹œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์•„๋‹ˆ๋‹ค. - String ๋ฌธ์ž์—ด์€ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’๊ณ , ๋™์ผํ•œ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ๊ฐ์ฒด๋ฅผ ๋งŽ์ด ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋‚ญ๋น„ โ‡’ ๋ฌธ์ž์—ด ์ƒ์ˆ˜ Pool ์„ ๋งŒ๋“ค์–ด ๋‘๊ณ , ๋™์ผํ•œ ๋ฌธ์ž์—ด ์‚ฌ์šฉ ์‹œ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ! New ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•œ String ์ƒ์„ฑ - String s = new String(); - ๊ฐ™์€ ๊ฐ’์ด๋ผ ํ•˜๋”๋ผ๋„ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค. - ๋‹จ์ˆœํžˆ ๋ฌธ์ž์—ด๋งŒ ์ง‘์–ด๋„ฃ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ String์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋งŽ์€ Overloading์„ ์ง€์›ํ•œ๋‹ค. (์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์˜ ๋ณ€๊ฒฝ, char[]์„ ํ†ตํ•œ String ์ƒ์„ฑ) String์˜ ๋น„๊ต - String์€ ๊ฐ์ฒด์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์˜ ๋น„๊ต ์‹œ == ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹Œ equals() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋น„๊ตํ•œ๋‹ค. * ์ฐธ๊ณ  ใ„ด String s1 = "hello"; String s2 = "hello"; ใ„ด s1 == s2 ์€ true๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ด๊ฒƒ์€ hello ๊ฐ’์ด ๊ฐ™์•„์„œ๊ฐ€ ์•„๋‹Œ Literal ํ‘œ๊ธฐ๋กœ ์ธํ•ด s1๊ณผ s2 ์ƒ์ˆ˜ Pool์˜ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” Reference์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ใ„ด new String์„ ํ†ตํ•ด ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ s1 โ‰  s2 ์ด๋‹ค.
Class์™€ ๊ฐ์ฒด์˜ Memory ๊ตฌ์กฐ (static - ํด๋ž˜์Šค ๋ณ€์ˆ˜)
Class ์ •์˜, ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ๋ฉ”๋ชจ๋ฆฌ Class Area - Class์˜ ์ •์˜ byte code๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. - Static์œผ๋กœ ์„ ์–ธํ•œ ํด๋ž˜์Šค ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ใ„ด Class Area์— ํ•œ๊ฐœ๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ • ์‹œ ํด๋ž˜์Šค, ๋ชจ๋“  ๊ฐ์ฒด์— ์ ์šฉ๋œ๋‹ค. Heap - ๋™์  ์ƒ์„ฑํ•œ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. Stack - ์Šค๋ ˆ๋“œ์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.