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

Java/Java์˜ ์ •์„

Chapter 05 - ๋ฐฐ์—ด

Chapter 05 - ๋ฐฐ์—ด

1. ๋ฐฐ์—ด(array)

1.1 ๋ฐฐ์—ด(array)์ด๋ž€?

  • ๊ฐ™์€ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ
  • ๋ณ€์ˆ˜ ๋Œ€์‹  ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ผ์ด ๋งŽ์Œ
  • ๋ฐฐ์—ด์„ ํ• ๋‹นํ•œ ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ํ•„์š”ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜

1.2 ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ

  • ํƒ€์ž…[] ๋ณ€์ˆ˜์ด๋ฆ„;
  • ํƒ€์ž… ๋ณ€์ˆ˜์ด๋ฆ„[];

๋ฐฐ์—ด์˜ ์ƒ์„ฑ

  • new ํƒ€์ž…[๊ธธ์ด];
    • ๊ธธ์ด์— ๋งž์ถ˜ ํƒ€์ž…์˜ ๋ฐฐ์—ด์ด ์ƒ์„ฑ

1.3 ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ์ธ๋ฑ์Šค

  • ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋งˆ๋‹ค ๋ถ™์—ฌ์ง„ ์ผ๋ จ๋ฒˆํ˜ธ
  • ์ธ๋ฑ์Šค์˜ ๋ฒ”์œ„๋Š” 0๋ถ€ํ„ฐ '๋ฐฐ์—ด ๊ธธ์ด -1๊นŒ์ง€'
  • ex) score[3]; -> score ๋ฐฐ์—ด์˜ 4๋ฒˆ์งธ ์š”์†Œ
  • index๋กœ ์ƒ์ˆ˜ ๋Œ€์‹  ๋ณ€์ˆ˜๋‚˜ ์ˆ˜์‹๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(for๋ฌธ ๋“ฑ๋“ฑ...)
  • index๋ฅผ ๋ฒ—์–ด๋‚œ ๋ฒ”์œ„์˜ ๊ฐ’์„ index๋กœ ๋‹ค๋ฃจ์ง€ ๋ง ๊ฒƒ
    • ์ปดํŒŒ์ผ์„ ๋งˆ์ณค๋”๋ผ๋„ ArrayIndexOutOfBoundsException ๋ฐœ์ƒ

๋ฐฐ์—ด์˜ ๊ธธ์ด

  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” int ๋ฒ”์œ„์˜ ์–‘์˜ ์ •์ˆ˜
  • ๊ธธ์ด๊ฐ€ 0์ธ ๋ฐฐ์—ด๋„ ์ƒ์„ฑ ๊ฐ€๋Šฅ

๋ฐฐ์—ด์ด๋ฆ„.length

  • JVM์ด ๋ชจ๋“  ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌ
    • ๋ฐฐ์—ด์ด๋ฆ„.length
  • ๋ฐฐ์—ด์€ ํ•œ๋ฒˆ ์ƒ์„ฑํ•˜๋ฉด ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ -> length๋Š” ์ƒ์ˆ˜
  • for๋ฌธ ๋“ฑ์—์„œ ํ™œ์šฉํ•  ๋•Œ ๊ธธ์ด๋ฅผ ์ง์ ‘ ์ ๋Š” ๊ฒƒ๋ณด๋‹ค length๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ

๋ฐฐ์—ด์˜ ๊ธธ์ด ๋ณ€๊ฒฝํ•˜๊ธฐ

  1. ๋” ํฐ ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ์ƒ์„ฑ
  2. ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๋‚ด์šฉ์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ๋ณต์‚ฌ

1.4 ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”

  • ์›ํ•˜๋Š” ๊ฐ’์€ ๊ฐ ์š”์†Œ๋งˆ๋‹ค ๊ฐ’์„ ์ง€์ •ํ•ด ์ค˜์•ผ ํ•จ
  • for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋„ ๊ฐ€๋Šฅ
  • ๋ฐฐ์—ด์„ ๊ฐ„๋‹จํžˆ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ง€์›
    • ex) int[] score = new int[]{50, 60, 70, 80, 90};
    • ๊ด„ํ˜ธ{} ์•ˆ์˜ ๊ฐ’์˜ ๊ฐœ์ˆ˜์— ์˜ํ•ด ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ์ž๋™์œผ๋กœ ๊ฒฐ์ • ([] ์•ˆ์— ๊ธธ์ด๋ฅผ ๋ช…์‹œํ•  ํ•„์š” X)
    • ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ์„ ๊ฐ™์ด ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” new ํƒ€์ž…[] ์ƒ๋žต ๊ฐ€๋Šฅ
    • ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ์„ ๋”ฐ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” new ํƒ€์ž…[] ์ƒ๋žต ๋ถˆ๊ฐ€
    • ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ int ๋ฐฐ์—ด์„ ์ƒ์„ฑ ์‹œ์—๋„ new ํƒ€์ž…์„ ์ƒ๋žต ๋ถˆ๊ฐ€
    • {}๋กœ๋งŒ ์„ ์–ธ ์‹œ ๊ธธ์ด๊ฐ€ 0์ธ ๋ฐฐ์—ด

๋ฐฐ์—ด์˜ ์ถœ๋ ฅ

  • index๋ฅผ ํ™œ์šฉํ•œ for๋ฌธ์œผ๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
  • Arrays.toString(๋ฐฐ์—ด์ด๋ฆ„) ๋ฉ”์„œ๋“œ๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
    • [์ฒซ ๋ฒˆ์งธ ์š”์†Œ, ๋‘ ๋ฒˆ์งธ ์š”์†Œ, ...]์˜ ํ˜•์‹
  • ์ฐธ์กฐ๋ณ€์ˆ˜ ์ถœ๋ ฅ ์‹œ ํƒ€์ž…@์ฃผ์†Œ ์ถœ๋ ฅ
  • ์˜ˆ์™ธ์ ์œผ๋กœ char ๋ฐฐ์—ด์€ println์œผ๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๊ฐ ์š”์†Œ๊ฐ€ ๊ตฌ๋ถ„์ž ์—†์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ

1.5 ๋ฐฐ์—ด์˜ ๋ณต์‚ฌ

  • ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํฐ ๋ฐฐ์—ด์„ ์ƒ์„ฑ ํ›„ ๋ณต์‚ฌ๋Š” ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ๋„‰๋„‰ํ•˜๊ฒŒ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์žก์„ ๊ฒƒ

System.arraycopy()๋ฅผ ์ด์šฉํ•œ ๋ฐฐ์—ด์˜ ๋ณต์‚ฌ

  • for๋ฌธ ๋ณด๋‹ค System.arraycopy()๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ 
    • ๊ฐ ์š”์†Œ๋“ค์ด ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ํŠน์„ฑ์„ ์‚ฌ์šฉํ•ด ํ†ต์งธ๋กœ ๋ณต์‚ฌ
  • System.arraycopy(num, 0, newNum, 0, num.length) -> num[0]์—์„œ newNum[0]์œผ๋กœ num.length๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌ
  • ๋ณต์‚ฌํ•˜๋ ค๋Š” ๋‚ด์šฉ๋ณด๋‹ค ์—ฌ์œ  ๊ณต๊ฐ„์ด ์ ์œผ๋ฉด ArrayIndexOutOfBoundsException

2. String ๋ฐฐ์—ด

2.1 String ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ

  • int ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด์ง€ ์•Š์Œ
  • ex) String[] name = new String[3];
    • 3๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑ
  • ๊ฐ ์š”์†Œ์˜ ๊ฐ’์€ null๋กœ ์ดˆ๊ธฐํ™” (๊ธฐ๋ณธ๊ฐ’์ด null์ด๋ฏ€๋กœ)

2.2 String ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”

  • ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋ฌธ์ž์—ด์„ ์ง€์ •
  • ๋˜๋Š” ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํžˆ ์ดˆ๊ธฐํ™”
  • ๋ฐฐ์—ด์— ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋จ
    • ๊ธฐ๋ณธํ˜• ๋ฐฐ์—ด์ด ์•„๋‹Œ ์ฐธ์กฐํ˜• ๋ฐฐ์—ด์ด๋ฏ€๋กœ (์ฐธ์กฐํ˜• ๋ฐฐ์—ด์„ ๊ฐ์ฒด ๋ฐฐ์—ด์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„)

2.3 char ๋ฐฐ์—ด๊ณผ String ํด๋ž˜์Šค

  • ๋ฌธ์ž์—ด์€ '๋ฌธ์ž๋ฅผ ์—ฐ์ด์–ด ๋Š˜์–ด๋†“์€ ๊ฒƒ'์„ ์˜๋ฏธ
  • String ํด๋ž˜์Šค๋Š” char ๋ฐฐ์—ด์— ๊ธฐ๋Šฅ(๋ฉ”์„œ๋“œ)๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒƒ
    • ๊ธฐ๋Šฅ์€ ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ
  • String ๊ฐ์ฒด๋Š” ์ฝ์„ ์ˆ˜๋งŒ ์žˆ์„ ๋ฟ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ

String ํด๋ž˜์Šค์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ

  • charAt(int index) : ๋ฌธ์ž์—ด์—์„œ ํ•ด๋‹น ์œ„์น˜์— ์žˆ๋Š” ๋ฌธ์ž ๋ฐ˜ํ™˜
  • int length() : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๋ฐ˜ํ™˜
  • String substring(int from, int to) : ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ (to๋Š” ๋ฒ”์œ„์— ํฌํ•จ X)
    • subString์ด ์•„๋‹Œ substring ์ž„์— ์ฃผ์˜
  • boolean equals(Object obj) : ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด obj์™€ ๊ฐ™์€์ง€ return
  • char[] toCharArray() : ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜

char ๋ฐฐ์—ด๊ณผ String ํด๋ž˜์Šค์˜ ๋ณ€ํ™˜

  • char ๋ฐฐ์—ด์„ charArr์ด๋ผ๊ณ  ํ•  ๋•Œ new String(charArr)๋กœ Sring์œผ๋กœ ๋ณ€ํ™˜
  • ๋ฌธ์ž์—ด str์ด ์žˆ์„ ๋•Œ str.toCharArray()๋กœ char ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
  • println()๋กœ ๋ฌธ์ž ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•˜๋ฉด ๋ฌธ์ž ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ด์–ด์„œ ํ•œ ์ค„๋กœ ์ถœ๋ ฅ

2.4 ์ปค๋งจ๋“œ ๋ผ์ธ์„ ํ†ตํ•ด ์ž…๋ ฅ๋ฐ›๊ธฐ

  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ํด๋ž˜์Šค ์ด๋ฆ„ ๋’ค์— ๊ณต๋ฐฑ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด ์ „๋‹ฌ ๊ฐ€๋Šฅ
  • main ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ args[0], args[1]๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ณต๋ฐฑ์ด ์žˆ์„ ์‹œ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•จ
  • ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด๋„ ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ
    • int num = Integer.parseInt("123")๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ˆซ์ž๋กœ ํŒŒ์‹ฑ
  • ์ปค๋งจ๋“œ ๋ผ์ธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์„ ์‹œ ํฌ๊ธฐ๊ฐ€ 0์ธ ๋ฐฐ์—ด์ด ์ƒ์„ฑ
    • args.length์˜ ๊ฐ’์€ 0
    • args์˜ ๊ฐ’์ด null์ผ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•จ

3. ๋‹ค์ฐจ์› ๋ฐฐ์—ด

3.1 2์ฐจ์› ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ์ธ๋ฑ์Šค

  • 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์—์„œ ๊ด„ํ˜ธ๊ฐ€ ํ•˜๋‚˜ ๋” ๋“ค์–ด๊ฐ
  • ex) 4ํ–‰ 3์—ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด -> int[][] score = new int[4][3];
    • 12๊ฐœ์˜ int ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์ƒ์„ฑ
    • int์˜ ๊ธฐ๋ณธ๊ฐ’์ธ 0์ด ์ €์žฅ

2์ฐจ์› ๋ฐฐ์—ด์˜ index

  • ํ–‰ index์˜ ๋ฒ”์œ„ : 0 ~ ํ–‰์˜ ๊ธธ์ด -1
  • ์—ด index์˜ ๋ฒ”์œ„ : 0 ~ ์—ด์˜ ๊ธธ์ด -1
  • ๋ฐฐ์—ด์ด๋ฆ„[ํ–‰ index][์—ด index]๋กœ ์ ‘๊ทผ

3.2 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”

  • ๊ด„ํ˜ธ{}๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐํ™” ๋™์‹œ์— ๊ฐ€๋Šฅ
    • 1์ฐจ์› ๋ฐฐ์—ด๋ณด๋‹ค ๊ด„ํ˜ธ๋ฅผ ํ•œ ๋ฒˆ ๋” ์จ์„œ ํ–‰๋ณ„๋กœ ๊ตฌ๋ถ„
  • 2์ฐจ์› ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ 1์ฐจ์› ๋ฐฐ์—ด์„ ๋ฌถ์–ด์„œ ๋˜ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด๋กœ ๋งŒ๋“  ๊ฒƒ
  • ๋ฐฐ์—ด์ด๋ฆ„.length๋Š” ํ–‰์˜ ๊ธธ์ด
  • ๋ฐฐ์—ด์ด๋ฆ„[ํ–‰ index].length๋Š” ์—ด์˜ ๊ธธ์ด

3.3 ๊ฐ€๋ณ€ ๋ฐฐ์—ด

  • 2์ฐจ์› ์ด์ƒ์˜ ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ ์‹œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ฐจ์ˆ˜์˜ ๊ธธ์ด๋ฅผ ์œ ๋™์ ์œผ๋กœ ๋‘” ๊ฐ€๋ณ€ ๋ฐฐ์—ด ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
    • ๋งˆ์ง€๋ง‰ ์ฐจ์ˆ˜๋ฅผ ๊ณต๋ž€์œผ๋กœ ๋‘๊ณ  ์ƒ์„ฑ
  • 2์ฐจ์› ๋ฐฐ์—ด์„ ๊ฐ€๋ณ€ ๋ฐฐ์—ด๋กœ ์ƒ์„ฑ ์‹œ ํ–‰๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ธธ์ด์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑ
  • ๊ฐ€๋ณ€ ๋ฐฐ์—ด ์—ญ์‹œ ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์„ฑ ๊ฐ€๋Šฅ