์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[KB IT's your life 7๊ธฐ] Java ์ œ์–ด๋ฌธ

yeye 2026. 4. 24. 09:39

Switch-Case๋ฌธ (Switch Statement)

๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

  • ๋ฌธ์ œ์ :
    • ๋‹ค์ค‘ if๋ฌธ: ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•จ
    • OR ์กฐ๊ฑด ๋งŒ๋“ค ๋•Œ ํ‘œํ˜„์ด ๋ณต์žกํ•จ
  • ํ•ด๊ฒฐ์ฑ…: Switch๋ฌธ์œผ๋กœ ์ฝ”๋“œ ๊ฐœ์„ 

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

switch(๊ฒ€์‚ฌ๊ฐ’) {
    case ๊ฐ’1:
        // ์‹คํ–‰ ์ฝ”๋“œ
        break;
    case ๊ฐ’2:
        // ์‹คํ–‰ ์ฝ”๋“œ
        break;
    default:
        // ๊ธฐ๋ณธ ์‹คํ–‰ ์ฝ”๋“œ
}

ํƒ€์ž… ์ œํ•œ์‚ฌํ•ญ

  • ์‚ฌ์šฉ ๊ฐ€๋Šฅ: ์ •์ˆ˜ํ˜•(int, long ๋“ฑ), String
  • ์‚ฌ์šฉ ๋ถˆ๊ฐ€: ์‹ค์ˆ˜ํ˜•(double, float), ๋Œ€๋ถ€๋ถ„์˜ ์ฐธ์กฐ ํƒ€์ž…
  • ์‹ค์ˆ˜ ๋ถˆ๊ฐ€ ์ด์œ :
    • ์‹ค์ˆ˜๋Š” ๊ทผ์‚ฟ๊ฐ’์œผ๋กœ ์ €์žฅ๋จ
    • ์™„์ „ ์ผ์น˜ ๋น„๊ต ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ
  • String ์˜ˆ์™ธ:
    • ์ดˆ๊ธฐ์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ์œผ๋‚˜
    • ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์•„ ํ›„์— ํ—ˆ์šฉ๋จ

Break๋ฌธ์˜ ์—ญํ• 

  • Break ์žˆ์„ ๋•Œ:
    • Switch๋ฌธ์„ ์ฆ‰์‹œ ๋ฒ—์–ด๋‚จ
    • ํ•ด๋‹น case๋งŒ ์‹คํ–‰
  • Break ์—†์„ ๋•Œ:
    • ๋‹ค์Œ case๋กœ ๊ณ„์† ์ง„ํ–‰ (Fall-through)
    • ์—ฌ๋Ÿฌ case ์—ฐ์† ์‹คํ–‰ ๊ฐ€๋Šฅ

์‹œ๊ฐ„๋Œ€๋ณ„ ์ž‘์—… ์˜ˆ์ œ

  • 8์‹œ ์ถœ๋ฐœ: ์ถœ๊ทผโ†’ํšŒ์˜โ†’์—…๋ฌดโ†’์™ธ๊ทผ (๋ชจ๋‘ ์‹คํ–‰)
  • 10์‹œ ์ถœ๋ฐœ: ์—…๋ฌดโ†’์™ธ๊ทผ (10์‹œ๋ถ€ํ„ฐ ์‹คํ–‰)
  • Break ์—†์ด ์‹œ์ž‘ ์œ„์น˜๋งŒ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •

์‹คํ–‰ ๊ฒฐ๊ณผ

OR ์กฐ๊ฑด ํ‘œํ˜„ (์ „ํ†ต์  ๋ฐฉ๋ฒ•)

case 8:
case 9:
    // 8 ๋˜๋Š” 9์ผ ๋•Œ ์‹คํ–‰
    break;
  • Break ์—†์ด case ์—ฐ์† ๋‚˜์—ด
  • ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๋ฌธ์ž ๊ฒ€์‚ฌ ๋“ฑ์— ํ™œ์šฉ
  • ๋‹จ์ : ํƒ€์ดํ•‘์ด ๋งŽ์Œ

Java 12 ์ดํ›„ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•

switch(๊ฒ€์‚ฌ๊ฐ’) {
    case 'A', 'a' -> {
        // ์‹คํ–‰ ์ฝ”๋“œ
    }
    case 'B', 'b' -> {
        // ์‹คํ–‰ ์ฝ”๋“œ
    }
    default -> {
        // ๊ธฐ๋ณธ ์ฝ”๋“œ
    }
}
  • ํŠน์ง•:
    • ์ฝค๋งˆ(,)๋กœ OR ์กฐ๊ฑด ํ‘œํ˜„
    • ์ฝœ๋ก (:) ๋Œ€์‹  ํ™”์‚ดํ‘œ(->) ์‚ฌ์šฉ
    • Lambda ํ•จ์ˆ˜ ํ‘œํ˜„์‹
    • Break ๋ถˆํ•„์š” (์ž๋™ return)
    • ์ค‘๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅ (ํ•œ ์ค„์ผ ๊ฒฝ์šฐ)
  • ์žฅ์ : ์‹œ๊ฐ์ ์œผ๋กœ ๊น”๋”, ๊ฐ„๊ฒฐํ•œ ํ‘œํ˜„

์˜ˆ์‹œ

์‹คํ–‰๊ฒฐ๊ณผ

Default๋ฌธ

  • ๋‹ค์ค‘ if๋ฌธ์˜ ๋งˆ์ง€๋ง‰ else์™€ ๋™์ผํ•œ ์—ญํ• 
  • ๋ชจ๋“  case์— ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ ์‹คํ–‰
  • ์„ ํƒ์‚ฌํ•ญ (์˜ต์…˜)

 

์ค‘์ฒฉ ๋ฃจํ”„๋ฌธ (Nested Loop)

์ค‘์ฒฉ ๋ฃจํ”„์˜ ์›์น™

  • ๋ฐ”๊นฅ ๋ฃจํ”„: ๊ณ ์ฐจ์›(๋†’์€ ์ฐจ์›)์˜ ๋ฐ˜๋ณต
  • ์•ˆ์ชฝ ๋ฃจํ”„: ์ €์ฐจ์›(๋‚ฎ์€ ์ฐจ์›)์˜ ๋ฐ˜๋ณต
  • ์›์น™: ๋ฐ”๊นฅ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋†’์€ ์ฐจ์›, ์•ˆ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋‚ฎ์€ ์ฐจ์›

2์ฐจ์› ํ…Œ์ด๋ธ” ์ˆœํšŒ ์˜ˆ์‹œ

// ํ–‰(row)๊ณผ ์—ด(column)์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”
for (ํ–‰์— ๋Œ€ํ•œ ๋ฃจํ”„) {        // ๋ฐ”๊นฅ ๋ฃจํ”„ = ๊ณ ์ฐจ์› = ํ–‰
    for (์—ด์— ๋Œ€ํ•œ ๋ฃจํ”„) {    // ์•ˆ์ชฝ ๋ฃจํ”„ = ์ €์ฐจ์› = ์—ด
        // ์ฒ˜๋ฆฌ
    }
}

๊ฒฐ๊ณผ

3์ฐจ์› ๋ฐฐ์—ด ์ˆœํšŒ ๊ตฌ์กฐ

  • ์ตœ์™ธ๊ณฝ ๋ฃจํ”„: Z ์ฐจ์›
  • ์ค‘๊ฐ„ ๋ฃจํ”„: ํ–‰(row)
  • ์ตœ๋‚ด๊ฐ ๋ฃจํ”„: ์—ด(column)

while๋ฌธ๊ณผ ๋ฐ˜๋ณต ์ œ์–ด

while๋ฌธ ํŠน์ง•

  • ์กฐ๊ฑด์‹์ด ์ฐธ(true)์ธ ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰
  • false๊ฐ€ ๋˜๋ฉด ๋ฃจํ”„ ํƒˆ์ถœ
  • ํ•„์ˆ˜ ์กฐ๊ฑด: ๋ฃจํ”„ ๋‚ด์—์„œ ์กฐ๊ฑด์‹์˜ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •ํ•ด์•ผ ํ•จ
    • ์ˆ˜์ •ํ•˜์ง€ ์•Š์œผ๋ฉด โ†’ ๋ฌดํ•œ ๋ฃจํ”„ ๋ฐœ์ƒ

while๋ฌธ vs for๋ฌธ

  • for๋ฌธ: ํšŸ์ˆ˜ ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต์— ์ ํ•ฉ
  • while๋ฌธ: ํŒจํ„ด ์—†์ด ๋ณ€ํ•˜๋Š” ๊ฐ’, ์ž…๋ ฅ๊ฐ’์— ๋”ฐ๋ฅธ ์ข…๋ฃŒ ์ฒ˜๋ฆฌ์— ์ ํ•ฉ

while๋ฌธ ํ™œ์šฉ ์˜ˆ์ œ

boolean run = true;
while(run) {
    // ๋ฉ”๋‰ด ์ œ์‹œ
    // 1. ์ฆ์†, 2. ๊ฐ์†Œ, 3. ์ •์ง€
    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();

    if(input.equals("3")) {
        run = false;  // ๋‹ค์Œ ๋ฃจํ”„์—์„œ ์ข…๋ฃŒ
    }
}

๋ฉ”๋‰ด ํ™•์žฅ ์‹œ ๋ฌธ์ œ์ 

  • ๋ฉ”๋‰ด ์ถ”๊ฐ€ ์‹œ if-else ๋ฌธ์ด ๊ณ„์† ์ฆ๊ฐ€
  • ๋ฒˆํ˜ธ ์กฐ์ • ํ•„์š”
  • ์œ ์ง€๋ณด์ˆ˜ ๊ด€์ ์—์„œ ์ข‹์ง€ ์•Š์€ ๊ตฌ์กฐ
  • ํ•ด๊ฒฐ์ฑ…: ๊ฐ์ฒด ์ง€ํ–ฅ ๊ธฐ๋ฒ• ํ™œ์šฉ (์ถ”ํ›„ ํ•™์Šต)

do-while๋ฌธ

๊ตฌ์กฐ์™€ ํŠน์ง•

do {
    // ์‹คํ–‰๋ฌธ (์ตœ์†Œ 1๋ฒˆ์€ ์‹คํ–‰ ๋ณด์žฅ)
} while(์กฐ๊ฑด์‹);
  • ์กฐ๊ฑด์‹์ด ๋’ค์— ์œ„์น˜
  • ์ตœ์†Œ 1๋ฒˆ ์‹คํ–‰ ๋ณด์žฅ (while๋ฌธ๊ณผ์˜ ์ฃผ์š” ์ฐจ์ด์ )
  • while๋ฌธ: ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฑฐ์ง“์ด๋ฉด ์‹คํ–‰ ์•ˆ ๋  ์ˆ˜ ์žˆ์Œ
  • do-while๋ฌธ: ๊ฒ€์‚ฌ๋ฅผ ๋งจ ๋’ค์— ํ•˜๋ฏ€๋กœ ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์‹คํ–‰

์‚ฌ์šฉ ๋นˆ๋„

  • JavaScript์—์„œ๋„ ์กด์žฌํ•˜์ง€๋งŒ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋งค์šฐ ๋‚ฎ์Œ
  • Java์—์„œ๋„ ์ƒ๋Œ€์ ์œผ๋กœ ์‚ฌ์šฉ ๋นˆ๋„ ๋‚ฎ์Œ

์ฐธ์กฐ ํƒ€์ž…๊ณผ ๋น„๊ต ์—ฐ์‚ฐ

์ฐธ์กฐ ํƒ€์ž…์˜ ๋น„๊ต ์—ฐ์‚ฐ (==)

  • Primitive ํƒ€์ž…: ์‹ค์ œ ๊ฐ’์„ ๋น„๊ต
  • ์ฐธ์กฐ ํƒ€์ž…: ์ฐธ์กฐ๊ฐ’(Reference Value)์„ ๋น„๊ต
    • ๋ณ€์ˆ˜ ์ž์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฐธ์กฐ๊ฐ’์œผ๋กœ ๋น„๊ต
    • ์‹ค์ œ ๋‚ด์šฉ์ด ๊ฐ™์•„๋„ ์ฐธ์กฐ๊ฐ€ ๋‹ค๋ฅด๋ฉด false

์˜ˆ์‹œ

// ๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด ๊ฐ์ฒด๊ฐ€ ํž™์— ์ƒ์„ฑ
int[] array1 = new int[]{1, 2, 3};
int[] array2 = new int[]{1, 2, 3};
int[] array3 = array2;

array1 == array2  // false (์ฐธ์กฐ๊ฐ’์ด ๋‹ค๋ฆ„)
array2 == array3  // true (๊ฐ™์€ ๊ณณ์„ ์ฐธ์กฐ)

์‹ค์ œ ๋‚ด์šฉ ๋น„๊ต ํ•„์š”์„ฑ

  • ์ฐธ์กฐ๊ฐ’ ๋น„๊ต๋„ ํ•„์š”ํ•˜์ง€๋งŒ, ์‹ค์ œ ๋‚ด์šฉ ๋น„๊ต๊ฐ€ ๋” ์ผ๋ฐ˜์ 
  • ๋ฐฐ์—ด, ๋ฌธ์ž์—ด, ๊ฐ์ฒด ๋“ฑ ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…์— ๋™์ผํ•˜๊ฒŒ ์ ์šฉ

null์˜ ๊ฐœ๋…๊ณผ ํ™œ์šฉ

null์˜ ์ •์˜

  • ์‹ค์ฒด: ์ˆซ์ž 0
  • ์˜๋ฏธ: ์•„๋ฌด๊ฒƒ๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š์Œ
  • ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…์— ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’
  • ์—ฐ๊ฒฐ๋œ ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์—†์Œ์„ ์˜๋ฏธ

null์˜ ์ฃผ์š” ์šฉ๋„

  1. ์ฐธ์กฐ ํƒ€์ž… ์ดˆ๊ธฐํ™”
    • ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์Œ (์“ฐ๋ ˆ๊ธฐ ๊ฐ’ ์กด์žฌ)
    • ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์„ ์œ„ํ•ด null๋กœ ์ดˆ๊ธฐํ™” ํ•„์š”
    • Heap์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ: ์ž๋™์œผ๋กœ 0(null)์œผ๋กœ ์ดˆ๊ธฐํ™”
  2. ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ
    • ์ฐธ์กฐ๋ฅผ null๋กœ ์„ค์ •ํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋น„์ง€(Garbage)๊ฐ€ ๋จ
    • Garbage Collector์— ์˜ํ•ด ์ž๋™ ๋ฐ˜๋‚ฉ

null ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ

  • ์œ ์ผํ•œ ์—ฐ์‚ฐ: ๊ฐ™๋ƒ/๋‹ค๋ฅด๋ƒ (== / !=)
  • null์— ๋Œ€ํ•œ ์ ‘๊ทผ ์‹œ๋„ โ†’ NullPointerException ๋ฐœ์ƒ

์•ˆ์ „ํ•œ null ์ฒ˜๋ฆฌ

if(๋ณ€์ˆ˜ != null) {
    // null์ด ์•„๋‹ ๋•Œ๋งŒ ์ฒ˜๋ฆฌ
}

๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ์ดˆ๊ธฐํ™”

Heap ์˜์—ญ

  • ์ดˆ๊ธฐํ™”: 0์œผ๋กœ ์ž๋™ ์ดˆ๊ธฐํ™”
  • ์ƒ์„ฑ ํ‚ค์›Œ๋“œ: new
  • ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์Œ
  • ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด์„œ ์ดˆ๊ธฐํ™”

Stack ์˜์—ญ

  • ์ดˆ๊ธฐํ™” ์—†์Œ: ์ด์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์Œ (์“ฐ๋ ˆ๊ธฐ ๊ฐ’)
  • ์ด์œ : ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋นˆ๋ฒˆํ•˜๊ณ  ์†๋„๊ฐ€ ์ค‘์š”ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐํ™” ์‹œ๊ฐ„ ์ ˆ์•ฝ
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ
  • ๋น ๋ฅธ ์šด์˜ ํ•„์š”

์ดˆ๊ธฐํ™” ๊ฐ’์˜ ์˜๋ฏธ

  • ๊ธฐ๋ณธ ํƒ€์ž…: 0์œผ๋กœ ์ดˆ๊ธฐํ™”
  • boolean: false๋กœ ํ•ด์„
  • ์ฐธ์กฐ ํƒ€์ž…: null (0์€ ์ฐธ์กฐ ํƒ€์ž…์—์„œ null์„ ์˜๋ฏธ)

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection)

๊ฐ€๋น„์ง€ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  1. null ๋ฐฐ์ •
  2. array = null; // ๊ธฐ์กด ์ฐธ์กฐ ์ œ๊ฑฐ
  3. ๋‹ค๋ฅธ ๊ฐ์ฒด ์ฐธ์กฐ
  4. array = new int[5]; // ๊ธฐ์กด ์ฐธ์กฐ ์žƒ์–ด๋ฒ„๋ฆผ

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ํš๊ธฐ์  ๋ฉ”์ปค๋‹ˆ์ฆ˜

  • ์ด์ „ (C/C++): malloc/free, new/delete๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌ
    • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak) ๋ฌธ์ œ ๋นˆ๋ฒˆ
  • Java: Garbage Collector๊ฐ€ ์ž๋™ ๊ด€๋ฆฌ
    • ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ์— ๋Œ€ํ•œ ์‹ ๊ฒฝ ๋ถˆํ•„์š”
    • ์ดํ›„ ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด๊ฐ€ ์ฑ„ํƒ

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์‹คํ–‰ ์‹œ์ 

  • ์ฆ‰์‹œ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Œ
  • JVM์— ์˜ํ•ด Garbage Collector๊ฐ€ ์Šค์ผ€์ค„๋ง๋จ
  • ์Šค์บ” ํ›„ ๋ฐœ๊ฒฌ๋˜๋ฉด ๊ทธ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜๋‚ฉ
  • ๊ฐœ๋ฐœ์ž๋Š” ์‹ ๊ฒฝ ์“ธ ํ•„์š” ์—†์Œ

๋ฌธ์ž์—ด (String)

๋ฌธ์ž์—ด์˜ ํŠน์ง•

  • ๋ถˆ๋ณ€ ๊ฐ์ฒด (Immutable Object)
  • ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋ถˆ๊ฐ€
  • ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ์šด์˜ํ•˜๋Š” ์–ธ์–ด: Java, JavaScript, Python
  • ๋ณ€๊ฒฝ ํ—ˆ์šฉ ์–ธ์–ด: C, C++ (์›๋ณธ ์ˆ˜์ • ๊ฐ€๋Šฅ)

๋ฌธ์ž์—ด ์ƒ์„ฑ ๋ฐฉ๋ฒ•

๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹ (๋Œ€์ž…)

String name1 = "ํ™๊ธธ๋™";
String name2 = "ํ™๊ธธ๋™";
// ๊ฐ™์€ ๋ฆฌํ„ฐ๋Ÿด์€ ํ•œ ๋ฒˆ๋งŒ ์ƒ์„ฑ๋˜์–ด ๊ณต์œ ๋จ
// name1 == name2 โ†’ true (๊ฐ™์€ ์ฐธ์กฐ)
  • ๋ฆฌํ„ฐ๋Ÿด์€ ์ƒ์ˆ˜ ์ฒ˜๋ฆฌ
  • ๋™์ผํ•œ ๋ฆฌํ„ฐ๋Ÿด์€ ์žฌ์‚ฌ์šฉ (ํ•œ ๋ฒŒ๋งŒ ์ƒ์„ฑ)
  • ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์ฐธ์กฐ๊ฐ€ ๋™์ผํ•จ

new ํ‚ค์›Œ๋“œ ๋ฐฉ์‹ (๋ช…์‹œ์  ๊ฐ์ฒด ์ƒ์„ฑ)

String name3 = new String("ํ™๊ธธ๋™");
// ๋ณ„๋„์˜ ๊ฐ์ฒด ์ƒ์„ฑ
// name1 == name3 โ†’ false (๋‹ค๋ฅธ ์ฐธ์กฐ)
  • ๋ช…์‹œ์ ์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ
  • ์„œ๋กœ ๋‹ค๋ฅธ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง

๋ฌธ์ž์—ด ๋น„๊ต

// ์ฐธ์กฐ๊ฐ’ ๋น„๊ต
name1 == name2    // ๋ฆฌํ„ฐ๋Ÿด: true
name1 == name3    // ๋‹ค๋ฅธ ๊ฐ์ฒด: false

// ์‹ค์ œ ๋‚ด์šฉ ๋น„๊ต
name1.equals(name3)  // true (๋‚ด์šฉ์ด ๊ฐ™์Œ)

๊ฒฐ๊ณผ

์ฃผ์š” ๋ฌธ์ž์—ด ๋ฉ”์„œ๋“œ

charAt() - ๋ฌธ์ž ์ถ”์ถœ

char c = str.charAt(0);  // 0๋ฒˆ์งธ ๊ธ€์ž ์ถ”์ถœ
// Java๋Š” ๋ฐฐ์—ด์‹ ์ ‘๊ทผ(str[0]) ๋ถˆ๊ฐ€
// ์ด์œ : ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ๋ฏธ์ง€์›

length() - ๋ฌธ์ž์—ด ๊ธธ์ด

int len = str.length();
// ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์ž๋ฆฟ์ˆ˜ ํ™•์ธ ๋“ฑ์— ํ™œ์šฉ

replace() - ๋ฌธ์ž์—ด ๋Œ€์ฒด

String result = str.replace("Java", "java");
// ๋ถˆ๋ณ€ ๊ฐ์ฒด: ์›๋ณธ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
// ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ์ƒ์„ฑํ•˜์—ฌ ๋ฆฌํ„ด

substring() - ๋ฌธ์ž์—ด ์ถ”์ถœ

String sub1 = str.substring(์‹œ์ž‘์ธ๋ฑ์Šค);           // ์‹œ์ž‘~๋๊นŒ์ง€
String sub2 = str.substring(์‹œ์ž‘์ธ๋ฑ์Šค, ๋์ธ๋ฑ์Šค);  // ๋์ธ๋ฑ์Šค๋Š” ๋ฏธํฌํ•จ

// ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์•ž 6์ž๋ฆฌ
String front = ssn.substring(0, 6);  // 0~5๊นŒ์ง€
  • ๋์ธ๋ฑ์Šค๋Š” ๋ฏธํฌํ•จ (ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฌ์šด ๋ถ€๋ถ„)

๋ฐฐ์—ด (Array)

๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ ํŠน์ง•

  • ์ฐธ์กฐ ํƒ€์ž…
  • ํฌ๊ธฐ ๊ณ ์ •: ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ํฌ๊ธฐ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
  • ๋™์ผ ํƒ€์ž…: ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅ

๋ฐฐ์—ด ์„ ์–ธ ๋ฐฉ๋ฒ•

๊ถŒ์žฅ ๋ฐฉ์‹

int[] array;        // ํƒ€์ž…[] ๋ณ€์ˆ˜๋ช…
double[] scores;    // ์ฐธ์กฐ ํƒ€์ž…์ž„์„ ๋ช…ํ™•ํžˆ ํ‘œํ˜„

๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋น„๊ถŒ์žฅ

int array[];        // C ์Šคํƒ€์ผ
  • ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹ ์„ ํ˜ธ ์ด์œ : "Integer ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜"์ž„์ด ๋ช…ํ™•

๋ฐฐ์—ด ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐํ™”

์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” (new ์ƒ๋žต ๊ฐ€๋Šฅ)

int[] array = {1, 2, 3};
// ์„ ์–ธ๋ฌธ์—์„œ๋งŒ ์ค‘๊ด„ํ˜ธ๋งŒ์œผ๋กœ ์ดˆ๊ธฐํ™” ๊ฐ€๋Šฅ

์„ ์–ธ๊ณผ ํ• ๋‹น ๋ถ„๋ฆฌ

int[] array;                    // ์„ ์–ธ
array = new int[]{1, 2, 3};     // new ํ•„์ˆ˜
// array = {1, 2, 3};           // ์—๋Ÿฌ! (์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ํ•ด์„)

ํฌ๊ธฐ๋งŒ ์ง€์ •

int[] array = new int[30];
// 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋จ (ํž™์— ์ƒ์„ฑ๋˜๋ฏ€๋กœ)

๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ

// ์ž˜๋ชป๋œ ๋ฐฉ๋ฒ•
printItem({1, 2, 3});           // ์—๋Ÿฌ!

// ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•
printItem(new int[]{1, 2, 3});  // new ํ•„์ˆ˜

๋ฐฐ์—ด์˜ length

int len = array.length;  // ๊ด„ํ˜ธ ์—†์Œ (๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ํ•„๋“œ/์ƒ์ˆ˜)
  • ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ์ƒ์ˆ˜ (final ๋ณ€์ˆ˜)
  • ๋ฐฐ์—ด ์ƒ์„ฑ ์‹œ ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”
  • ์ฝ๊ธฐ ์ „์šฉ (Read-only): ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
  • for๋ฌธ ์ข…๋ฃŒ ์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ

๋ฐฐ์—ด ์ˆœํšŒ

for(int i = 0; i < array.length; i++) {
    // array[i] ์ฒ˜๋ฆฌ
}

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

Java ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ํŠน์ง•

  • ๊ณ ์ฐจ์› ๋ฐฐ์—ด = ์ €์ฐจ์› ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ๋ฐฐ์—ด
  • ๊ฐ ์ฐจ์›์˜ ๋ฐฐ์—ด ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ (C/C++์™€์˜ ์ฐจ์ด์ )
  • ํƒ€์ž…์€ ๋™์ผํ•˜์ง€๋งŒ ๊ธธ์ด๋Š” ์ œ๊ฐ๊ฐ ๊ฐ€๋Šฅ

๊ฒฐ๊ณผ

2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”

๋™์‹œ ์ดˆ๊ธฐํ™”

int[][] scores = {
    {1, 2, 3},      // ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด (๊ธธ์ด 3)
    {4, 5}          // ๋‘ ๋ฒˆ์งธ ๋ฐฐ์—ด (๊ธธ์ด 2)
};

๊ธธ์ด๋งŒ ์ง€์ • (๋ชจ๋“  ์ฐจ์›)

int[][] scores = new int[2][3];
// 2๊ฐœ์˜ ๋ฐฐ์—ด, ๊ฐ๊ฐ 3๊ฐœ์˜ ์š”์†Œ
// ๋ชจ๋“  ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๋™์ผ

๊ณ ์ฐจ์›๋งŒ ์ง€์ • (๋‹จ๊ณ„๋ณ„ ์ƒ์„ฑ)

// 1๋‹จ๊ณ„: ๊ณ ์ฐจ์› ๋ฐฐ์—ด๋งŒ ์ƒ์„ฑ
int[][] scores = new int[2][];
// scores[0] = null, scores[1] = null

// 2๋‹จ๊ณ„: ๊ฐ ๋ฐฐ์—ด์„ ๊ฐœ๋ณ„ ์ƒ์„ฑ (๊ธธ์ด๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ)
scores[0] = new int[3];   // ๊ธธ์ด 3
scores[1] = new int[2];   // ๊ธธ์ด 2

๋‹ค์ฐจ์› ๋ฐฐ์—ด ์ ‘๊ทผ

๊ฐœ๋ณ„ ๋ฐฐ์—ด ๊ธธ์ด ํ™•์ธ

scores.length           // ๊ณ ์ฐจ์› ๋ฐฐ์—ด์˜ ๊ธธ์ด (2)
scores[0].length        // ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ๊ธธ์ด (3)
scores[1].length        // ๋‘ ๋ฒˆ์งธ ๋ฐฐ์—ด์˜ ๊ธธ์ด (2)

์ด์ค‘ ๋ฃจํ”„๋กœ ์ˆœํšŒ

for(int i = 0; i < scores.length; i++) {           // ๋ฐ”๊นฅ ๋ฃจํ”„
    for(int j = 0; j < scores[i].length; j++) {   // ์•ˆ์ชฝ ๋ฃจํ”„ (๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)
        // scores[i][j] ์ฒ˜๋ฆฌ
    }
}
  • ์ฃผ์˜: ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋ฉด ์•ˆ ๋จ (๊ฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ)
  • ๋ฐ˜๋“œ์‹œ scores[i].length ์‚ฌ์šฉ

์ฐจ์›๋ณ„ ์ธ๋ฑ์Šค ์˜๋ฏธ

  • ์•ž์ชฝ ์ธ๋ฑ์Šค: ๊ณ ์ฐจ์›
  • ๋’ค์ชฝ ์ธ๋ฑ์Šค: ์ €์ฐจ์›
  • ์˜ˆ: scores[i][j]
    • i: ํ–‰ (๊ณ ์ฐจ์›)
    • j: ์—ด (์ €์ฐจ์›)

Java ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•

์ž๋ฃŒํ˜•์˜ ๋ถ„๋ฅ˜

  • ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(Primitive Type): 8๊ฐ€์ง€
  • ์ฐธ์กฐ ์ž๋ฃŒํ˜•(Reference Type): ๊ธฐ๋ณธํ˜• ์ด์™ธ ๋ชจ๋“  ๊ฒƒ
  •  

๋‹จ์ผ ๋ฌธ์žํ˜•

  • char: 2 bytes
    • 2๋ฐ”์ดํŠธ ์ฒด๊ณ„ ์œ ๋‹ˆ์ฝ”๋“œ ์‚ฌ์šฉ
    • ํ•œ ๊ธ€์ž ํ‘œํ˜„

๋…ผ๋ฆฌํ˜•

  • boolean: 1 byte
    • ๊ฐ’: true ๋˜๋Š” false๋งŒ ๊ฐ€๋Šฅ
    • ํ˜•๋ณ€ํ™˜ ๋ถˆ๊ฐ€: ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•๊ณผ ์ ˆ๋Œ€ ๋ณ€ํ™˜ ์•ˆ ๋จ
    • JavaScript์™€ ๋‹ฌ๋ฆฌ 0์„ false๋กœ ์ธ์‹ ์•ˆ ํ•จ
    • ์˜ค์ง true/false(์†Œ๋ฌธ์ž)๋งŒ ํ—ˆ์šฉ

ํ˜•๋ณ€ํ™˜ ๊ทœ์น™

  • ์ž๋™ ํ˜•๋ณ€ํ™˜: ์ž‘์€ ํƒ€์ž… โ†’ ํฐ ํƒ€์ž…
    • ์˜ˆ: byte โ†’ short โ†’ int โ†’ long โ†’ float โ†’ double
  • ๊ฐ•์ œ ํ˜•๋ณ€ํ™˜: ํฐ ํƒ€์ž… โ†’ ์ž‘์€ ํƒ€์ž… (๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ)
  • ์˜ˆ์™ธ: boolean์€ ์–ด๋–ค ํƒ€์ž…๊ณผ๋„ ํ˜•๋ณ€ํ™˜ ๋ถˆ๊ฐ€