• ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ž๋ฐ” ์ž…์ถœ๋ ฅ(I/O) ์ •๋ฆฌ

    2025. 2. 2.

    by. @leeeun

    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ java๋กœ ์ค€๋น„ํ•˜๊ฒŒ ๋˜๋ฉด์„œ, ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฐ”์˜ ์ž…์ถœ๋ ฅ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

     

     

    ์ž๋ฐ” ์ž…์ถœ๋ ฅ(IO)์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

    ์ž๋ฐ”์˜ ์ž…์ถœ๋ ฅ์€ ‘Stream’์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค. (java8๋ถ€ํ„ฐ ๋„์ž…) stream์€ ํ๋ฆ„์ด๋ผ๋Š” ๋œป์„ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋“ฏ์ด ์ž๋ฐ”์—์„œ stream์€ ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

    ์ด๊ฒŒ ๋Œ€์ฒด.. ๋ฌด์Šจ ๋ง์ด๋ƒํ•˜๋ฉด ํ˜ธ์ˆ˜์ฒ˜๋Ÿผ ๋ฌผ์ด ๊ณ ์—ฌ์žˆ๋Š” ๊ฒŒ ์•„๋‹Œ, ๋ฌผ์ด ํ๋ฅด๋“ฏ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด collection๊ณผ stream์„ ๋น„๊ตํ•ด๋ณด์ž.

     

     

    โœ… ์ปฌ๋ ‰์…˜ (Collection)

    • List, Set, Map ๊ฐ™์€ ์ปฌ๋ ‰์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„(์ปจํ…Œ์ด๋„ˆ)์ด๋‹ค.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    for (String name : names) {
        System.out.println(name.toUpperCase());  // ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ง์ ‘ ์ˆœํšŒํ•˜๋ฉฐ ์ถœ๋ ฅ
    }
    
    • ์˜ˆ๋ฅผ ๋“ค์–ด List๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ string ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ์ง์ ‘ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ปฌ๋ ‰์…˜์€ ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•œ๋‹ค. ์‚ญ์ œํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ๋‹ค.

     

    โœ… ์ŠคํŠธ๋ฆผ (Stream)

    • Stream ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ณต๊ฐ„์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€๋‚˜๊ฐ€๋Š” "ํŒŒ์ดํ”„๋ผ์ธ" ๊ฐ™์€ ๊ฐœ๋…์ด๋‹ค.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    names.stream()
         .map(String::toUpperCase)  // ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜
         .forEach(System.out::println);  // ์ตœ์ข… ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์ถœ๋ ฅ
    
    • ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ ์œ ํ•˜์ง€ ์•Š๊ณ  ์—ฐ์‚ฐ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ๋งŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค.(์ผ์ข…์˜ Lazy Collection, ์ด๋ก ์ ์œผ๋กœ๋Š”..)
    • ์ŠคํŠธ๋ฆผ์€ ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
    • ๊ธฐ๋ณธ์ ์œผ๋กœ FIFO ๊ตฌ์กฐ์ด๋ฉฐ, ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค. ์ž…์ถœ๋ ฅ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ๊ณผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ด ํ•„์š”ํ•˜๋‹ค.

     

     

    ์ž๋ฐ” ์ž…์ถœ๋ ฅ

    ์ข…๋ฅ˜ IO ๋Œ€์ƒ ๊ธฐ์ค€ ์ž๋ฃŒ์˜ ์ข…๋ฅ˜ ๊ธฐ์ค€ ์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋Šฅ ๊ธฐ์ค€
    FileInputStream ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ
    FileReader ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฌธ์ž ๋‹จ์œ„ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ
    BufferedInputStream ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ
    BufferedReader ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฌธ์ž ๋‹จ์œ„ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ
    FileOutputStream ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ
    FileWriter ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฌธ์ž ๋‹จ์œ„ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ
    BufferedOutputStream ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ
    BufferedWriter ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๋ฌธ์ž ๋‹จ์œ„ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

    ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์ด๋ž€?
    ์ž๋ฐ”์˜ Char ํ˜•์€ 2 byte๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋ฐ”์ดํŠธ ๋‹จ์œ„๋Š” ์ž…์ถœ๋ ฅ ๋‹จ์œ„๊ฐ€ 1 byte์ด๋ฏ€๋กœ ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ์ŠคํŠธ๋ฆผ

     

    ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์ด๋ž€?

    ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์€ ๋Œ€์ƒ์— ์ง์ ‘ ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ธฐ๋Šฅ์˜ ์ŠคํŠธ๋ฆผ์ด๋ผ๋ฉด, ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์—†๋‹ค.

     

    InputStream / OutputStream

    • ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ณ , ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

     

    InputStreamReader / OutputStreamWriter

    • 2๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
    • System.in์€ 1 ๋ฐ”์ดํŠธ ๋‹จ์œ„ → ์ด๊ฑธ stream์œผ๋กœ ์ฝ์–ด์„œ charter ๋‹จ์œ„๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

     

    Scanner

    Scanner sc = new Scanner(System.in);
    System.out.println(sc.next());
    
    • ์ฝ˜์†” ์ž…๋ ฅ ํด๋ž˜์Šค
    • ํ† ํฐ๋‹จ์œ„(๊ณต๋ฐฑ/ ๊ฐœํ–‰ ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„)๋กœ ์ž…๋ ฅ๊ฐ’์„ ์ธ์‹ํ•ด์„œ ๋™์ž‘ํ•œ๋‹ค.

    ๋ฉ”์„œ๋“œ

    • next(): String ์ฝ๊ธฐ
    • nextInt(): int ์ฝ๊ธฐ
    • next๋จธ์‹œ๊ธฐ(): ๋จธ์‹œ๊ธฐ ์ฝ๊ธฐ
    • nextLine(): ๊ฐœํ–‰์ด ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€ ๋‹ค ์ฝ๊ธฐ

     

    BufferedReader / BufferedWriter

    • ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž…์ถœ๋ ฅ ํด๋ž˜์Šค
      • ํ•˜๋‚˜ ํ•˜๋‚˜ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ๋ฌผ๊ฑด์„ ํ•œ ๋ฒˆ์— ๋‹ด์•„์„œ ์˜ฎ๊ธด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
    • ๊ธฐ๋ณธ์ ์œผ๋กœ String์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„์„œ, int๋กœ ๊ณ„์‚ฐํ•ด์•ผ๋˜๋Š” ๊ฒฝ์šฐ ํ˜•๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค.
    • Scanner์™€ ๋‹ค๋ฅด๊ฒŒ ๊ณต๋ฐฑ์ด ์•„๋‹Œ ์—”ํ„ฐ๋งŒ ๊ฒฝ๊ณ„๋กœ ์ธ์‹ํ•œ๋‹ค.
    • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ Scanner๋ณด๋‹ค ๋น ๋ฅผ ์ˆ˜ ์žˆ์Œ
    • ์‚ฌ์šฉ ์‹œ์—๋Š” ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์— IOException์„ throwํ•˜๊ฑฐ๋‚˜ try catch ๋ฌธ์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

     

    BufferedReader

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    String input=br.readLine();
    String[] s = br.readLine().split(" "); // ๋ฌธ์ž์—ด๋กœ ๋ฐ›๊ณ  ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฆ„
    
    • ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž…๋ ฅ ํด๋ž˜์Šค

    ๋ฉ”์„œ๋“œ

    • close(): ์ž…๋ ฅ ์ข…๋ฃŒ
    • markSupported(): ์ŠคํŠธ๋ฆผ์ด mark ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š”์ง€ t/f๋กœ ์•Œ๋ ค์คŒ
    • read(): ํ•œ ๊ฐœ์˜ ๊ธ€์ž ์ฝ๊ธฐ
    • readLine(): String์œผ๋กœ ํ•œ ์ค„ ์ฝ๊ธฐ
    • skip(long n): n๊ฐœ์˜ ๋ฌธ์ž ๊ฑด๋„ˆ๋›ฐ๊ธฐ

     

    BufferedWriter

    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // ์„ ์–ธ
    String str = "abcdef"; // ์ถœ๋ ฅํ•  ๋ฌธ์ž์—ด
    bw.write(s); // ์ถœ๋ ฅ
    bw.newLine(); // ์ค„๋ฐ”๊ฟˆ
    bw.flush(); // ๋‚จ์•„์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์ถœ๋ ฅ
    bw.close();
    
    • ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ถœ๋ ฅ ํด๋ž˜์Šค

    ๋ฉ”์„œ๋“œ

    • write() : ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ’์„ ์ถœ๋ ฅ. ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” char or string
      • ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด String.valueOf() ๋กœ ๊ฐ์‹ธ์•ผ ํ•จ
    • flush(): ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์šด ํ›„, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ
    • close(): ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์šด ํ›„, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ŠคํŠธ๋ฆผ์ด ๋‹ซํž˜
      • ๋” ์ถœ๋ ฅํ•  ์ผ์ด ์žˆ๋‹ค๋ฉด flush()๋ฅผ ์‚ฌ์šฉํ•˜์ž.
    • newLine(): ๊ฐœํ–‰ ๋ฉ”์†Œ๋“œ

    ๋ฒ„ํผ๋ฅผ ์—ด๊ณ  ๋‚˜์„œ๋Š” ์‚ฌ์šฉ ํ›„ ๋ฐ˜๋“œ์‹œ flush์™€ close๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

     

     

    ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฉ”์„œ๋“œ

    System.out.print()

    ๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์„ ๋‹จ์ˆœ ์ถœ๋ ฅ, ๊ฐœํ–‰ x

     

    System.out.println()

    ๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅ, ๊ฐœํ–‰ o

     

    System.out.printf()

    ์ง€์‹œ์ž์™€ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ํ˜•์‹์„ ์ง€์ •ํ•ด์„œ ์ถœ๋ ฅ ๊ฐ€๋Šฅ

     

     

    ์ง€์‹œ์ž ์ข…๋ฅ˜

    • %b : boolean
    • %d : 10์ง„์ˆ˜
    • %o : 8์ง„์ˆ˜
    • %x, %X : 16์ง„์ˆ˜
    • %c : ๋ฌธ์ž
    • %s : ๋ฌธ์ž์—ด
    • %n : ์ค„ ๋ฐ”๊ฟˆ

     

    ํ”Œ๋ž˜๊ทธ ์ข…๋ฅ˜

    • : ์™ผ์ชฝ ์ •๋ ฌ
    • +: +, - ๋ถ€ํ˜ธ ์ถœ๋ ฅ
    • ๊ณต๋ฐฑ(’ ‘) : ์Œ์ˆ˜์ผ ๋•Œ๋งŒ ๋ถ€ํ˜ธ ์ถœ๋ ฅ
    • 0 : ๋‚จ์€ ์ž๋ฆฌ์— 0์„ ์ฑ„์›€
    • , : ์ผ์ • ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ๊ตฌ๋ถ„ ๋ฌธ์ž ํ‘œ์‹œ
    • # : 8์ง„์ˆ˜, 16์ง„์ˆ˜์— ์ ‘๋‘์‚ฌ ํ‘œ์‹œ

     

    ๊ทธ์™ธ.. ์œ ์šฉํ•œ ํด๋ž˜์Šค๋“ค

     

    StringTokenizer

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    
    • ์ง€์ •ํ•œ ๊ตฌ๋ถ„์ž๋กœ ๋ฌธ์ž์—ด(String)์„ ๋‚˜๋ˆ ์ฃผ๋Š” ํด๋ž˜์Šค
    • ๊ตฌ๋ถ„์ž๊ฐ€ ์—†์œผ๋ฉด ๊ณต๋ฐฑ๋‹จ์œ„๋กœ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ ์ฃผ์–ด, ๊ณต๋ฐฑ์œผ๋กœ ์ž…๋ ฅ๊ฐ’์ด ๊ตฌ๋ถ„๋˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉ
    • ์ •๊ทœ์‹์ด๋‚˜ ์ธ๋ฑ์Šค ์ ‘๊ทผ๊ณผ ๊ฐ™์€ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”์—†๋‹ค๋ฉด StringTokenizer๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ 

     

    ๋ฉ”์„œ๋“œ

    hasMoreTokens() ๋‚จ์€ ํ† ํฐ์ด ์žˆ๋Š”์ง€ ํ™•์ธ (true or false)
    nextToken() ๋‹ค์Œ ํ† ํฐ ๋ฐ˜ํ™˜ (์—†์œผ๋ฉด NoSuchElementException ๋ฐœ์ƒ)
    countTokens() ๋‚จ์€ ํ† ํฐ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
    nextToken(String delim) ์ƒˆ๋กœ์šด ๊ตฌ๋ถ„์ž๋กœ ๋ณ€๊ฒฝ ํ›„ ๋‹ค์Œ ํ† ํฐ ๋ฐ˜ํ™˜

     

    StringBuilder

    StringBuilder sb = new StringBuilder();
    sb.append("a");
    sb.append("b").append(" ");
    sb.append("c").append("\\n");
    System.out.println(sb);
    
    • ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•œ (mutable) ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
    • ์ž๋ฐ”์—์„œ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•ด์•ผํ•  ๋•Œ, ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

    ๋ฉ”์„œ๋“œ

    append(String s) ๋ฌธ์ž์—ด ์ถ”๊ฐ€
    insert(int index, String s) ํŠน์ • ์œ„์น˜์— ๋ฌธ์ž์—ด ์‚ฝ์ž…
    replace(int start, int end, String s) ํŠน์ • ๋ฒ”์œ„ ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ
    delete(int start, int end) ํŠน์ • ๋ฒ”์œ„ ๋ฌธ์ž์—ด ์‚ญ์ œ
    reverse() ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์Œ
    length() ๋ฌธ์ž์—ด ๊ธธ์ด ๋ฐ˜ํ™˜
    capacity() ๋‚ด๋ถ€ ๋ฒ„ํผ ํฌ๊ธฐ ๋ฐ˜ํ™˜
    setLength(int newLength) ๋ฌธ์ž์—ด ๊ธธ์ด ์กฐ์ •
    charAt(int index) ํŠน์ • ์œ„์น˜ ๋ฌธ์ž ๋ฐ˜ํ™˜

     

     

    ์ฐธ๊ณ ํ•œ ๊ธ€๋“ค

    ์ž๋ฐ” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ •๋ฆฌ - ์ž…์ถœ๋ ฅ

    Java ์ž…์ถœ๋ ฅ์€ ์–ด๋–ค๊ฑธ ์‚ฌ์šฉํ•ด์•ผํ•˜๋‚˜?

    ๋Œ“๊ธ€