<Java์ ์ ์ ๊ฐ์ 3ํ>์ ๊ธฐ๋ณธ์ผ๋ก ๋ฐฐ์ด ๋ด์ฉ์ ๋๋ค.
๋ชฉ์ฐจ
- <์ฝ์ ์
๋ ฅ>
- 1. InputStream ํด๋์ค ์ด์ฉ - ๊ธฐ๋ณธ์ ์ธ ์
๋ ฅ๋ฐฉ๋ฒ
- 1-1) ์คํธ๋ฆผ(Stream)์ด๋?
- 2. InputStreamReaderํด๋์ค ์ด์ฉ
- 2-1) BufferedReader
- 3. Scannerํด๋์ค ์ด์ฉ
- <์ฝ์ ์ถ๋ ฅ>
<์ฝ์ ์ ๋ ฅ>
์ฝ์ ์ ์ถ๋ ฅ์ ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ฌ๋ผ์ง๋ค. Java์ ๊ฒฝ์ฐ ๋ง์ ์ฌ๋๋ค์ด ์ดํด๋ฆฝ์ค๋ ๋์ค๋ฅผ ์ด์ฉํด ๋ง์ด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ๋๋ฐ ์ฌ์ฉ์๊ฐ ์ง์ ์ฝ์์ฐฝ์ ํตํด ์ ๋ ฅ์ ๋ฐ๊ฑฐ๋ ์ถ๋ ฅ์ ๋ฐ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
- InputStream - byte
- InputStreamReader - character
- BufferedReader - String
1. InputStream ํด๋์ค ์ด์ฉ - ๊ธฐ๋ณธ์ ์ธ ์ ๋ ฅ๋ฐฉ๋ฒ
import java.io.InputStream;
public class StreamTest {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
int a;
a = in.read(); //์ฌ์ฉ์์ ์
๋ ฅ์ ๋๊ธฐํ๊ณ ์์.
System.out.println(a);
}
}
- InputStream์ ๊ฐ์ฒด์ธ System.in ์ ์ด์ฉํ๋ฉด ์ฝ์ ์ ๋ ฅ์ ์ป์ ์ ์๋ค.
- read๋ฉ์๋๋ก ์ฝ์ 1 byte์ ๋ฐ์ดํฐ๋ byte ์๋ฃํ์ผ๋ก ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ผ int ์๋ฃํ์ผ๋ก ์ ์ฅ๋๋ค. ์ ์ฅ๋๋ int ๊ฐ์ 0-255 ์ฌ์ด์ ์ ์๊ฐ์ผ๋ก ์์คํค ์ฝ๋๊ฐ์ด๋ค.
- "abc" ๋ฅผ ์ ๋ ฅํด๋ ์ถ๋ ฅ์ "a"์ ํด๋น๋๋ ์์คํค ์ฝ๋๊ฐ๋ง ์ถ๋ ฅ๋๋ค. ๊ทธ ์ด์ ๋ InputStream์ read ๋ฉ์๋๋ 1 byte๋ง ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค. read()๋ฉ์๋๋ฅผ 3๋ฒ ์คํํ๊ฑฐ๋ ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ง๋ ํ read()๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด "abc"์ 3byte๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ ์ ์๋ค.
- InputStream์ ๋จ์ ์ค ํ๋๋ ๋ฐ๋ก ๋ชจ๋ ์๋ฃํ์ ์์คํค์ฝ๋๋ก ์ธ์ํ๋ค๋ ์ ์ด๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ฐ์ ๋ชจ๋ ์์คํค์ฝ๋๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ์๋ฃํ์ ๊ด๊ณ์์ด ์ ๋ ฅํ ์๋ ์์ผ๋ ์ด๋ฅผ ์ด์ฉํด ํ๋ก๊ทธ๋จ์ ์ง๊ธฐ ๋งค์ฐ ํ๋ค๊ฒ ๋๋ค๋ ๋จ์ ์ด ๋ฐ์๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ ํด๋์ค๊ฐ ๋ฐ๋ก InputStreamReader์ด๋ค.
1-1) ์คํธ๋ฆผ(Stream)์ด๋?
์คํธ๋ฆผ์ ๊ฐ์ฅ ์ฝ๊ฒ ์ดํดํ๋ ค๋ฉด ์๋๊ผญ์ง๋ฅผ ์๊ฐํ๋ฉด ๋๋ค. ์๋๊ผญ์ง๋ฅผ ํ๋ฉด ๋ฌผ์ด ๋์ค๊ณ ์๋๊ผญ์ง๋ฅผ ์ ๊ทธ๋ฉด ๋ฌผ์ด ๋์ค์ง ์๋๋ค. A๋ผ๋ ๊ณณ์์๋ถํฐ B๋ผ๋ ๊ณณ๊น์ง ์๋๊ด์ด ์ฐ๊ฒฐ๋์ด ์๊ณ A์์ ๊ณ์ ๋ฌผ์ ๋ณด๋ธ๋ค๋ฉด B์์ ์๋๊ผญ์ง๋ฅผ ํ๋๋ง๋ค ๋ฌผ์ด ๋์ค๊ฒ ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์คํธ๋ฆผ์ A์๋๊ด์์ B์๋๊ด์ผ๋ก ์ด๋ํ๋ ๋ฌผ์ ํ๋ฆ์ด๋ผ๊ณ ํ ์ ์๋ค.
ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์คํธ๋ฆผ์ด๋ผ๊ณ ํ ์ ์๋ค.
- ํ์ผ ๋ฐ์ดํฐ (ํ์ผ์ ๊ทธ ์์๊ณผ ๋์ด ์๋ ๋ฐ์ดํฐ์ ์คํธ๋ฆผ์ด๋ค.)
- HTTP ์๋ต ๋ฐ์ดํฐ (๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ๊ณ ์๋ฒ๊ฐ ์๋ตํ๋ HTTP ์๋ต ๋ฐ์ดํฐ๋ ์คํธ๋ฆผ์ด๋ค.)
- ํค๋ณด๋ ์ ๋ ฅ (์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ก ์ ๋ ฅํ๋ ๋ฌธ์์ด์ ์คํธ๋ฆผ์ด๋ค.)
2. InputStreamReaderํด๋์ค ์ด์ฉ
import java.io.InputStream;
import java.io.InputStreamReader;
public class StreamTest {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in); //InputStreamReader๊ฐ์ฒด ์์ฑ
char[] a = new char[3];
reader.read(a);
System.out.println(a);
}
}
- InputStreamReader ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ ์์ฑ์์ ์ ๋ ฅ์ผ๋ก InputStream์ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
- InputStream์์๋ ์ฝ์ด๋ค์ผ ๊ฐ์ byte๋ฐฐ์ด๋ก ์ ์ธํด์ผ ํ์ง๋ง, InputStreamReader๋ฅผ ์ด์ฉํ๋ฉด byte๋์ char๋ฐฐ์ด์ ์ฌ์ฉํ ์ ์๋ค.
2-1) BufferedReader
์ ์์ ์ ๋ถํธํ ์ ์ ๊ณ ์ ๋ ๊ธธ์ด๋ก๋ง ์คํธ๋ฆผ์ ์ฝ์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. BufferedReader์ readLine๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ํฐํค๋ฅผ ์ ๋ ฅํ ๋๊น์ง ์ ๋ ฅํ๋ ๋ฌธ์์ด ์ ๋ถ๋ฅผ ์ฝ์ ์ ์๋ค.
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class StreamTest {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
String a = br.readLine();
System.out.println(a);
}
}
3. Scannerํด๋์ค ์ด์ฉ - ์ฝ์์ ๋ ฅ์ ๋ณด๋ค ์ฝ๊ฒ ์ฒ๋ฆฌ ํ ์ ์๋ค.
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //์์ฑ์์ ์
๋ ฅ์ผ๋ก System.in์ ํ์๋ก ํ๋ค.
System.out.println(sc.next()); //next()๋ฉ์๋๋ ๋จ์ด ํ๋(Token)๋ฅผ ์ฝ๋๋ค.
}
}
- Scannerํด๋์ค์ ์ฅ์ ์ ์ ๋ ฅ๋ฐ๋ ๊ฐ์ด ์๋ฃํ์ ๊ตฌ๋ถ์ด ๋ณ๋๋ก ํ์ํ์ง ์๋ค๋ ์ ์ด๋ค. ํ๋ก๊ทธ๋จ์์ ์ ์ธ๋ ๋ณ์์ ๋ฐ๋ผ ๊ฐ์ ์ฝ๊ฒ ๋๋ค
- Scanner ํด๋์ค์ ์ ์ฅ๋์ด์๋ ๋ฉ์๋๋ค๋ก ์ ๋ ฅ๊ฐ์ ๊ตฌ๋ถํ๊ฒ ๋๋๋ฐ, ๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ 3๊ฐ์ง ํจ์๊ฐ ์์ ์๋ nextLine(), next(), nextInt()์ด๋ค. ๋ ๋ง์ ๋ฉ์๋๋ฅผ ์๊ณ ์ถ๋ค๋ฉด ๋ค์ ์ฌ์ดํธ(ํด๋ฆญ)๋ฅผ ์ฐธ๊ณ ํ๋ค.
next() | ๋จ์ด ๋จ์๋ก ์ฝ๋ ๋ฉ์๋ |
nextLine() | ๋ผ์ธ ๋จ์๋ก ์ฝ๋ ๋ฉ์๋ |
nextInt() | intํ ๊ฐ์ ์ฝ๋ ๋ฉ์๋ |
<์ฝ์ ์ถ๋ ฅ>
- ์ฝ์ ์ ๋ ฅ์์ System.in ํด๋์ค๋ฅผ ์ด์ฉํด ์ฌ์ฉ์๊ฐ ์ ๋ ฅ์ ์งํํ๋ค๋ฉด ์ถ๋ ฅ์ ๊ฒฝ์ฐ System.out ํด๋์ค๋ฅผ ์ด์ฉํด์ ์ถ๋ ฅํ๋ฉด ๋๋ค. ์์ ๋ง์ ์์ ํ๋ฉด์์ ๋ณด์ฌ์ค๋๋ก System.out.println()์ ์ ์ธํ์ฌ ์ํ๋ ๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋๋ค. Java.lang์ ์ํ System๊ฐ์ฒด๋ฅผ ํตํด JVM์์ ํ์ํ ๋ค์ํ ์ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- System.out์ ๊ฐ์ ์ค ํ๋๋ ๋ณ๋์ try/catch๋ฌธ์ ์์ฑํ ํ์ํ ์๋ค๋ ์ ์ด๋ค. ์์ธ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ ์๋ฃ๋ ๊ฒฐ๊ณผ ๊ฐ ๋ง์ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ ๋จ ํ์ค์ ๋ฌธ์ฅ์ผ๋ก๋ ์ฝ๊ฒ ์ถ๋ ฅ ๊ฐ์ ๋ด๋ณด๋ผ ์ ์๋ค.
'๐ฐ ์ธ์ด > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(3) (0) | 2020.06.09 |
---|---|
์๋ฐ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(2) (0) | 2020.06.09 |
์๋ฐ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(1) (0) | 2020.06.04 |
switch/case๋ฌธ (0) | 2020.06.04 |
์๋ฐ์ ๋ํ์ฌ (0) | 2020.06.04 |