• [Java] ch3 ์ž๋ฐ”์˜ ์ž๋ฃŒํ˜• (Data type) ์ •๋ฆฌ

    2023. 8. 13.

    by. @leeeun

    01 ์ˆซ์ž(number)

     

    • ์ •์ˆ˜
    ์ž๋ฃŒํ˜•ํ‘œํ˜„๋ฒ”์œ„
    int -2147483648 ~ 2147483647
    long -9223372036854775808 ~ 9223372036854775807

    long ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•  ๋•Œ ์ˆซ์ž ๊ฐ’์ด 2147483647 ๋ณด๋‹ค ํด ๊ฒฝ์šฐ L ์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•จ

    (์ƒ๋žต์‹œ ์ปดํŒŒ์ผ ์—๋Ÿฌ)

    • ์‹ค์ˆ˜
    ์ž๋ฃŒํ˜•ํ‘œํ˜„๋ฒ”์œ„
    float −3.4∗1038 ~ 3.4∗1038
    double −1.7∗10308 ~ 1.7∗10308

    ๋””ํดํŠธ๊ฐ€ double, float ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด F์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•จ

    e2์™€ ๊ฐ™์ด ์“ฐ๋ฉด 10์˜ ์ œ๊ณฑ ์˜๋ฏธ

    • 8์ง„์ˆ˜, 16์ง„์ˆ˜

    0(์ˆซ์ž '0')์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด 8์ง„์ˆ˜, 0x(์ˆซ์ž '0' + ์•ŒํŒŒ๋ฒณ 'x')๋กœ ์‹œ์ž‘ํ•˜๋ฉด 16์ง„์ˆ˜

    int octal = 023;    // ์‹ญ์ง„์ˆ˜: 19
    int hex = 0xC;     // ์‹ญ์ง„์ˆ˜: 12

    ์ˆซ์ž ์—ฐ์‚ฐ

    • ์‚ฌ์น™์—ฐ์‚ฐ - +,-,*,/
    • ๋‚˜๋จธ์ง€ ๋ฐ˜ํ™˜ - %
    • ์ฆ๊ฐ์—ฐ์‚ฐ - ++, --
    ๐Ÿ’ก ์ฃผ์˜) ++์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜๋ช… ๋’ค์— ๋ถ™์œผ๋ฉด(i++) ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„์ด ์•„๋‹Œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ ์ดํ›„ ๊ฐ’์ด ๋ณ€๊ฒฝ↔ ++i ๋กœ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฉด i๊ฐ’์ด ์ฆ๊ฐ€๋œ ์ดํ›„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰
    • i++ : ๊ฐ’์ด ์ฐธ์กฐ๋œ ํ›„์— ์ฆ๊ฐ€
    • ++i : ๊ฐ’์ด ์ฐธ์กฐ๋˜๊ธฐ ์ „์— ์ฆ๊ฐ€

    02 ๋ถˆ(boolean)

     

    • ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“ (true or false)
    • boolean์„ ์•ž์— ๋ถ™์ž„ boolean isTall = height>base;

    03 ๋ฌธ์ž(char)

     

    • string๊ณผ ๋‹ฌ๋ฆฌ ํ•œ ๊ฐœ์˜ ๋ฌธ์ž๊ฐ’์— ๋Œ€ํ•œ ์ž๋ฃŒํ˜•
    • 3๊ฐ€์ง€ ํ‘œํ˜„๋ฐฉ์‹
    char a1 = 'a';  // ๋ฌธ์ž๋กœ ํ‘œํ˜„
    char a2 = 97;  // ์•„์Šคํ‚ค์ฝ”๋“œ๋กœ ํ‘œํ˜„
    char a3 = '\u0061';  // ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ํ‘œํ˜„

    04 ๋ฌธ์ž์—ด(string)

     

    • literal ํ‘œ๊ธฐ(String a = "happy java”) : ๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ๊ณ ์ •๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋Œ€์ž…, ๋ฌธ์ž์—ด์„ JVM์˜ intern pool ์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ
    • ๊ฐ์ฒด์ƒ์„ฑ ๋ฐฉ์‹(String b = new String("happy java")) : ํ•ญ์ƒ ์ƒˆ๋กœ์šด stirng ๊ฐ์ฒด ์ƒ์„ฑ

    Primitive ์ž๋ฃŒํ˜•

    • int, long, double, float, boolean, char ์ž๋ฃŒํ˜•
    • new ํ‚ค์›Œ๋“œ๋กœ ๊ทธ ๊ฐ’์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ
    • literal๋กœ๋งŒ ๊ฐ’์„ ์ง€์ • ๊ฐ€๋Šฅ

     

    ์›์‹œ ์ž๋ฃŒํ˜•์˜ Wrapper ํด๋ž˜์Šค

    ์›์‹œ ์ž๋ฃŒํ˜•์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ๊ฐ๊ฐ์— ๋Œ€์‘ํ•˜๋Š” Wrapper ํด๋ž˜์Šค๋“ค์ด ์กด์žฌ

    • wrapper class๋ž€?
      • ์ž๋ฐ” API ํด๋ž˜์Šค์ค‘ ํ•˜๋‚˜
      • ์ž๋ฐ”์˜ ์ž๋ฃŒํ˜•์€ primitive type(๊ธฐ๋ณธ ํƒ€์ž…) ๊ณผ reference type(์ฐธ์กฐ ํƒ€์ž…)์ด ์กด์žฌ
        • ๊ธฐ๋ณธ ํƒ€์ž… : byte, short, char, int, long, float, double, boolean
        • ์ฐธ์กฐ ํƒ€์ž… : class, interface ..
      • 8๊ฐœ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํฌ์žฅํ•ด ์ฃผ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋ฐ”๋กœ wrapper class(๋ž˜ํผ ํด๋ž˜์Šค)
        • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”์†Œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ์ฒด ํƒ€์ž…๋งŒ์ด ์š”๊ตฌ๋  ๊ฒฝ์šฐ
          • ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ์ง€๋งŒ (AutoBoxing์„ ํ†ตํ•ด)
          • ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ›„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.
        • ๊ธฐ๋ณธ ํƒ€์ž…์€ ๊ฐ’์„ ๊ฐ–๋Š” ๊ฐ์ฒด์ธ ํฌ์žฅ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฐ’์„ ๋‚ด๋ถ€์— ๋‘๊ณ  ํฌ์žฅํ•˜๊ธฐ๋•Œ๋ฌธ์— 'ํฌ์žฅ ๊ฐ์ฒด'๋ผ ์นญํ•œ๋‹ค.)
          • wrapper class๋Š” ๊ฐ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›์•„, ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
        • wrapper class๋กœ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ๊ธฐ๋ณธ ํƒ€์ž… ๊ฐ’์€ ์™ธ๋ถ€์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
          - ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒˆ๋กœ์šด ํฌ์žฅ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
        • Wrapper Class๋ž€

    ์›์‹œ์ž๋ฃŒํ˜• Wrapper class 
    int Integer
    long Long
    double Double
    float Float
    boolean Boolean
    char Char

    ArrayList, HashMap, HashSet ๋“ฑ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ• ๋•Œ ์›์‹œ ์ž๋ฃŒํ˜• ๋Œ€์‹  ๊ทธ์— ๋Œ€์‘ํ•˜๋Š” Wrapper ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

    ์›์‹œ ์ž๋ฃŒํ˜• ๋Œ€์‹  Wrapper ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’ ๋Œ€์‹  ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๋ฅผ ๊ฐ์ฒด ์ค‘์‹ฌ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์œ ๋ฆฌํ•˜๋‹ค. ๋˜ํ•œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ Wrapper ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.

     

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

    • equals - ๋ฌธ์ž์—ด์ด ๋™์ผํ•œ์ง€ ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด true ๋‹ค๋ฅด๋ฉด false (๋ฌธ์ž์—ด ๋น„๊ตํ•  ๋•Œ == ๋ชป์”€)
    • indexOf - ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์ด ์‹œ์ž‘๋˜๋Š” ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ๋ฆฌํ„ด (์ž๋ฐ”๋Š” ์ˆซ์ž๋ฅผ 0๋ถ€ํ„ฐ ์…ˆ)
    • contains - ํŠน์ • ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ๋ฆฌํ„ด(์žˆ์œผ๋ฉด true)
    • charAt - ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ์œ„์น˜์˜ ๋ฌธ์ž(char)๋ฅผ ๋ฆฌํ„ด
    • replaceAll - ๋ฌธ์ž์—ด ์ค‘ ํŠน์ • ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ณ ์ž ํ•  ๋•Œ ex) a.replaceAll(”a”,”b”);
    • substring - ๋ฌธ์ž์—ด ์ค‘ ํŠน์ • ๋ถ€๋ถ„์„ ๋ฝ‘์•„๋‚ผ ๋•Œ ex) substring(์‹œ์ž‘์œ„์น˜, ๋์œ„์น˜) → ์‹œ์ž‘์œ„์น˜์—์„œ ๋์œ„์น˜-1 ์˜ ๋ฌธ์ž๋ฅผ ๋ฝ‘์•„๋ƒ„
    • toUpperCase - ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ
    • split - ๋ฌธ์ž์—ด์„ ํŠน์ • ๊ตฌ๋ถ„์ž๋กœ ๋‚˜๋ˆ„์–ด ๋ฌธ์ž์—ด array๋กœ ๋ฆฌํ„ด ex) a.split(”:”)

     

    ๋ฌธ์ž์—ด ํฌ๋งคํŒ…

    String.format ๋งค์„œ๋“œ ์‚ฌ์šฉ ex) String.format(”i love %s”, “you”)

    ๋ณ€์ˆ˜๋‚˜ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฐ’๋„ ๋Œ€์ž… ๊ฐ€๋Šฅ


    %s ๋ฌธ์ž์—ด(String)
    %c ๋ฌธ์ž 1๊ฐœ(character)
    %d ์ •์ˆ˜(Integer)
    %f ๋ถ€๋™์†Œ์ˆ˜(floating-point)
    %o 8์ง„์ˆ˜
    %x 16์ง„์ˆ˜
    %% Literal % (๋ฌธ์ž % ์ž์ฒด)

    %s → ์–ด๋–ค ํ˜•ํƒœ์˜ ๊ฐ’์ด๋“ (์ •์ˆ˜, ์†Œ์ˆ˜..) ์ „๋‹ฌ๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉ

    %10s → ์ „์ฒด ๊ธธ์ด 10์ธ ๋ฌธ์ž์—ด ๊ณต๊ฐ„, ๋Œ€์ž…๋˜๋Š” ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ ์ •๋ ฌํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ณต๋ฐฑ์œผ๋กœ

    **System.out.printf**

    String.format ๊ณผ System.out.printf

    ์ „์ž) ๋ฌธ์ž์—ด ๋ฆฌํ„ด, ํ›„์ž) ๋ฌธ์ž์—ด ์ถœ๋ ฅ

    String.format ์—†์ด ๋ฐ”๋กœ ํฌ๋งคํŒ…ํ•ด์„œ ๋ฌธ์ž์—ด ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜


    05 StringBuffer

     

    • ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒํ˜•
    • toString() ๋ฉ”์„œ๋“œ๋กœ string ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ

    StringBuffer์˜ ๋ฉ”์†Œ๋“œ

    • append - ๋ฌธ์ž์—ด ์ถ”๊ฐ€ ๊ทธ๋ƒฅ stirng ์ž๋ฃŒํ˜•์— + ์—ฐ์‚ฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด๋ฅผ ํ•œ๋ฒˆ๋งŒ ์ƒ์„ฑ, ์ˆ˜์ •๊ฐ€๋Šฅ
    • insert - ํŠน์ • ์œ„์น˜์— ๋ฌธ์ž์—ด ์‚ฝ์ž…
    • substring

    StringBuilder ์ž๋ฃŒํ˜•

    StringBuffer์™€ ์œ ์‚ฌ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—๋Š” buffer๊ฐ€ ์ ํ•ฉํ•˜๊ณ  ์„ฑ๋Šฅ์€ ์–˜๊ฐ€ ์ข‹์Œ


    06 ๋ฐฐ์—ด(Array)

     

    • ์ž๋ฃŒํ˜•์˜ ์ง‘ํ•ฉ
    • ์ž๋ฃŒํ˜• ํƒ€์ž… ๋ฐ”๋กœ ์˜†์— [] ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ ex) int ์ž๋ฃŒํ˜•์˜ ๋ฐฐ์—ด์€ int[] ๋กœ ํ‘œํ˜„ํ•œ
    • ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” ๊ณ ์ •! ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋จผ์ € ์„ค์ •ํ•œ ํ›„ ๊ฐ’์„ ๋‚˜์ค‘์— ๋Œ€์ž…(์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜)
    • ์ธ๋ฑ์‹ฑ์„ ํ†ตํ•ด ๋ฐฐ์—ด ๊ฐ’์— ์ ‘๊ทผ
    • length๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ๊ธธ์ด ์–ป์„ ์ˆ˜ o

    07 ๋ฆฌ์ŠคํŠธ(List)

     

    List<์ž๋ฃŒํ˜•> ๋ฆฌ์ŠคํŠธ ๋ช… = new ArrayList(or LinkedList)<์ž๋ฃŒํ˜•(์ƒ๋žต๊ฐ€๋Šฅ)>();

    • ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ์ข… - ArrayList, Vector, LinkedList์˜ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Œ
    • ArrayList๋‚˜ LinkedList๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” java.util ํŒจํ‚ค์ง€์— ์žˆ๋Š” ArrayList๋‚˜ LinkedList, List๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•จ (import java.util.ArrayList;)
    • array์™€ ๋‹ฌ๋ฆฌ ๊ธธ์ด๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€๋™ ๊ฐ€๋Šฅ
    • <> ์ œ๋„ˆ๋ฆญ์œผ๋กœ ๋ช…์‹œํ•ด์•ผ ํ•จ

     

    ArrayList ๋ฉ”์„œ๋“œ

    • add - ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ ์‚ฝ์ž…
    • get - ํŠน์ • ์ธ๋ฑ์Šค ๊ฐ’ ์ถ”์ถœ
    • size - list์˜ ๊ฐฏ์ˆ˜ ๋ฆฌํ„ด
    • contains - ๋ฆฌ์ŠคํŠธ ์•ˆ์— ํŒŒ๋ผ๋ฏธํ„ฐ ํ•ญ๋ชฉ์ด ์žˆ๋Š”์ง€ ํŒ๋ณ„ํ•ด์„œ boolํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ด
    • remove - ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•˜๊ณ  boolํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฃผ๋ฉด ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ณ  ์‚ญ์ œ๋œ ํ•ญ๋ชฉ์„ ๋ฆฌํ„ด
    • sort - ์˜ค๋ฆ„์ฐจ์ˆœ ํ˜น์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌ import java.util.Comparator; ํ•„์š”
      • ์˜ค๋ฆ„์ฐจ์ˆœ(์ˆœ๋ฐฉํ–ฅ) ์ •๋ ฌ - Comparator.naturalOrder()
      • ๋‚ด๋ฆผ์ฐจ์ˆœ(์—ญ๋ฐฉํ–ฅ) ์ •๋ ฌ - Comparator.reverseOrder()
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class Sample {
        public static void main(String[] args) {
            ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
            pitches.sort(Comparator.naturalOrder());  // ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
            System.out.println(pitches);  // [129, 138, 142] ์ถœ๋ ฅ
        }
    }

     

    ์ œ๋„ˆ๋ฆญ์Šค

    • ArrayList()๊ฐ™์€ ์ž๋ฃŒํ˜• ํƒ€์ž… ์˜†์— ๊ฐ™์€ ๋ฌธ๊ตฌ
    • ๋” ๋ช…ํ™•ํ•œ ํƒ€์ž…์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ์Œ.
    • ArrayList<String> pitches = **new** **ArrayList**<>(); → arraylist์•ˆ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์€ stringํƒ€์ž… ๋ฟ์ด๋ผ๋Š” ๋œป
    • ์ œ๋„ˆ๋ฆญ์Šค๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์ถ”๊ฐ€๋˜๋Š” ๊ฐ์ฒด๋Š” object ์ž๋ฃŒํ˜•์œผ๋กœ ์ธ์‹๋จ → string์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜•๋ณ€ํ™˜ ํ•„์š”
    String one = (String) pitches.get(0); // Object ์ž๋ฃŒํ˜•์„ String ์ž๋ฃŒํ˜•์œผ๋กœ ์บ์ŠคํŒ…ํ•œ๋‹ค.
    • ์ œ๋„ˆ๋ฆญ์Šค๋กœ ๋ช…์‹œํ•  ์‹œ ํ˜•๋ณ€ํ™˜ ๊ณผ์ •์ด ํ•„์š”x

     

    **ArrayList ์ƒ์„ฑ**

    • add๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
    • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” array๋ฅผ ํ™œ์šฉ→ Arrays.asList(array๋ฐ์ดํ„ฐ or string์ž๋ฃŒํ˜• ์—ฌ๋Ÿฌ๊ฐœ)

     

    String.join

    String.join("๊ตฌ๋ถ„์ž", ๋ฆฌ์ŠคํŠธ๊ฐ์ฒด) ํ˜•ํƒœ

    • ๊ฐ ์š”์†Œ ์‚ฌ์ด์— ๊ตฌ๋ถ„์ž๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
    • ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ฐ์†๋œ string์œผ๋กœ ๋งŒ๋“ค ๋•Œ์—๋„ ์‚ฌ์šฉ ex) String.join(””,List)

    08 ๋งต(Map)

     

    • associative array, hash๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ๋Œ€์‘๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•ด์ฃผ๋Š” ์ž๋ฃŒํ˜•
    • list์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธํ„ฐํŽ˜์ด์Šค
    • ์ˆœ์ฐจ์  ๋ฐฉ์‹์ด ์•„๋‹Œ key-value๋ฐฉ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ์Œ์œผ๋กœ ์ €์žฅ(ํŒŒ์ด์ฌ์˜ dictionary์™€ ์œ ์‚ฌ)
    • HashMap, LinkedHashMap, TreeMap ๋“ฑ์ด ์žˆ์Œ

     

    HashMap

    • key value ๋ชจ๋‘ string ํƒ€์ž…
    • key์™€ value๋ฅผ ๋ฌถ์–ด ํ•˜๋‚˜์˜ entry๋กœ ์ €์žฅ
    • ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ → ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰

    put

    key์™€ value ์Œ์„ ์ถ”๊ฐ€

    import java.util.HashMap;
    
    public class Sample {
        public static void main(String[] args) {
            HashMap<String, String> map = new HashMap<>();
            map.put("people", "์‚ฌ๋žŒ");
            map.put("baseball", "์•ผ๊ตฌ");
        }
    }

    get

    key์— ํ•ด๋‹นํ•˜๋Š” value๊ฐ’ ์–ป์„ ๋•Œ

    key์— ํ•ด๋‹นํ•˜๋Š” value๊ฐ€ ์—†์œผ๋ฉด null์ด ๋ฆฌํ„ด. ๋””ํดํŠธ ๊ฐ’์„ ์–ป๊ณ  ์‹ถ์„ ๋•Œ๋Š” getOrDefault ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

    containsKey

    ๋งต์— ํ•ด๋‹นํ•˜๋Š” key๊ฐ€ ์žˆ๋Š”์ง€ ์œ ๋ฌด๋ฅผ ์ฐธ ๊ฑฐ์ง“์œผ๋กœ ๋ฆฌํ„ด

    remove

    ๋งต(Map)์˜ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ key๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ์•„์ดํ…œ(key, value)์„ ์‚ญ์ œํ•œ ํ›„ ๊ทธ value ๊ฐ’์„ ๋ฆฌํ„ด

    ****size****

    Map์˜ ์ด key ๊ฐฏ์ˆ˜๋ฅผ ๋ฆฌํ„ด

    keySet

    keySet์€ ๋งต(Map)์˜ ๋ชจ๋“  Key๋ฅผ ๋ชจ์•„์„œ ๋ฆฌํ„ด

     

    LinkedHashMap

    • HashMap์€ key์˜ ์ˆœ์„œ๊ฐ€ ์ž…๋ ฅํ•œ๋Œ€๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง€์ผœ์ง€์ง€ ์•Š์Œ
    • LinkedHashMap์€ ์ž…๋ ฅ๋œ key์˜ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์‚ฌ์šฉ๋ฒ•์€ HashMap๊ณผ ๋™์ผ

     

    TreeMap

    • key์™€ value ์Œ์„ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ(key์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ˆœ์„œ)
    • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ ์†๋„ ๋น ๋ฆ„
    • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋กœ ๊ตฌํ˜„

    09 ์ง‘ํ•ฉ(set)

     

    HashSet<String> set = **new** **HashSet**<>(Arrays.asList("H", "e", "l", "l", "o"));

    • Set ์ธํ„ฐํŽ˜์ด์Šค
    • list์™€ ๋‹ฌ๋ฆฌ ์ค‘๋ณต๊ฐ’์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๊ณ  ์ˆœ์„œ๊ฐ€ ์—†์Œ(์ธ๋ฑ์‹ฑx)
    • ์ธํ„ฐํŽ˜์ด์Šค import ํ›„ HashSet์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ

    ์ง‘ํ•ฉ ๋ฉ”์„œ๋“œ

    • retainAll - ๊ต์ง‘ํ•ฉ
    • addAll - ํ•ฉ์ง‘ํ•ฉ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’ ํ•œ ๋ฒˆ์— ์ถ”๊ฐ€ํ•˜๊ธฐ(array
    • removeAll - ์ฐจ์ง‘ํ•ฉ
    • add - ์ง‘ํ•ฉ์— ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ
    • remove - ํŠน์ • ๊ฐ’ ์ œ๊ฑฐ set.remove(”์ œ๊ฑฐํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’”)

     

    Treeset & LinkedHaseSet

    • TreeSet - ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๊ฐ’์„ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅ
    • LinkedHashSet - ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ์ •๋ ฌํ•˜์—ฌ ์ €์žฅ

    10 ์ƒ์ˆ˜์ง‘ํ•ฉ(Enum)

     

    • ๊ด€๋ จ์ด ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒ์ˆ˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒํ˜•
    enum CoffeeType {
        AMERICANO,
        ICE_AMERICANO,
        CAFE_LATTE
    };
    
    /**
     * countSellCoffee๋Š” ํŒ๋งค๋œ ์ปคํ”ผ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
     * @param type ์ปคํ”ผ์˜ ์ข…๋ฅ˜ (CoffeType)
     */
    int countSellCoffee(CoffeType type) {
        ... ์ƒ๋žต ...
    }
    
    int americano = countSellCoffee(CoffeType.AMERICANO);  // ์•„๋ฉ”๋ฆฌ์นด๋…ธ์˜ ํŒ๋งค๊ฐฏ์ˆ˜
    • ๋งค์ง ๋„˜๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•จ
    • ์ž˜๋ชป๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•จ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ• ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์„ฑ์ด ์‚ฌ๋ผ์ง

    ํ˜•๋ณ€ํ™˜

    ๋ฌธ์ž์—ด→์ •์ˆ˜ : Wrapper ํด๋ž˜์Šค๋ฅผ ์ด์šฉ Integer.parseInt(๋ฌธ์ž์—ด)

    ์ •์ˆ˜→๋ฌธ์ž์—ด : ์ •์ˆ˜ ์•ž์— ๋นˆ ๋ฌธ์ž์—ด ๋”ํ•˜๊ธฐ, String.valueOf(์ •์ˆ˜), Integer.toString(์ •์ˆ˜)

    ๋ฌธ์ž์—ด→์†Œ์ˆ˜ : Double.parseDouble ๋˜๋Š” Float.parseFloat

    ์ •์ˆ˜→์‹ค์ˆ˜ : double ์ƒˆ๋กœ์šด์‹ค์ˆ˜ = ์ •์ˆ˜;

    ์‹ค์ˆ˜→์ •์ˆ˜ : int ์ƒˆ๋กœ์šด์ •์ˆ˜ = (int) ์‹ค์ˆ˜; ์บ์ŠคํŒ… (int) ์„ ์ด์šฉ

    ๋ฌธ์ž์—ด→์‹ค์ˆ˜ : Double.parseDouble() ์‚ฌ์šฉ

     

    final

    ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ๊ทธ ๊ฐ’์„ ๋‹ค์‹œ ์„ค์ •ํ•  ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“œ๋Š” ํ‚ค์›Œ๋“œ

    ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๋„์ค‘ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ ๋  ๋•Œ ์‚ฌ์šฉ

    ๋ฆฌ์ŠคํŠธ → final๋กœ ์„ ์–ธํ•ด๋„ add์™€ removesm๋Š” ๊ฐ€๋Šฅ. ์ด๊ฑฐ๊นŒ์ง€๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด List.of()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

    ๋Œ“๊ธ€