| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- ๋ฐฐ๋น์ฃผ
- CI/CD
- GIT
- ๋ฐฑ์ค ์ฝํ๋ฆฐ
- js
- ํ์ฝํ
- ๋ฏธ๊ตญ๋ฐฐ๋น์ฃผํฌ์
- ์๊ณ ๋ฆฌ์ฆ
- linux
- ์๋ฐ
- Java
- javascript
- ๋ฐฑ์ค
- ๋ฏธ๊ตญ์ฃผ์
- ์ฝํ๋ฆฐ
- Swift
- ์ฝํ๋ฆฐ ์๊ณ ๋ฆฌ์ฆ
- kotlin ์๊ณ ๋ฆฌ์ฆ
- pnpm
- java ์ฝ๋ฉ ํ ์คํธ
- Kotlin
- Vue.js
- ํ๋ก๊ทธ๋๋จธ์ค
- python
- ์๋ฐ์คํฌ๋ฆฝํธ
- vue3
- ํ์ด์ฌ
- kotlin algorithm
- ์ฝํ๋ฆฐ ์คํ
- ์๋ฐ ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
๐ ์ ์ด์ ๋จธ๋ฆฟ์์ผ๋ก
์๋ฐ[Java] ์ ์ถ๋ ฅ Stream ์ดํดํ๊ธฐ ๋ณธ๋ฌธ
โถInputStream / Sytem.in.read()
ImputStream์ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ์ ์๋ ์ญํ ์ ํ๋ค.
์ฌ์ฉ์ ์ ๋ ฅ์ ์์ฃผ ์ฐ์ด๋ ํด๋์ค์ธ Scanner์ ๋ค๋ฅธ ๋์์ ๋ณด์ด๋๋ฐ, ๊ฐ์ฅ ํฐ ํน์ง์ 1byte ๋จ์๋ก ์ ๋ ฅ์ ๋ฐ์์จ๋ค๋ ์ ์ด๋ค.
Sytem.in.read()์ ์ฌ์ฉ์ ์ ๋ ฅ์ ์์ ์ ์ฅํ๋ ๋ฒํผ(Buffer)์์ ์ ์ฅ๋ ๊ฐ์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค.
์ด read()์ return ๊ฐ์ byte๋จ์์ ๋ฐ์ดํฐ ํน์ -1(๋ฒํผ์ ๊ฐ์ด ์์ ๋)์ด๋ค.
โถ์์คํค์ฝ๋ ๊ฐ์ผ๋ก ์ ์ฅ
read() ๋ฉ์๋๋ก ๋ฆฌํดํ ๊ฐ์ ๋ณ์์ ์ ์ฅํ๊ฒ ๋ ํ ๋ฐ, ์ด๋ ์ฌ์ฉ์ ์ ๋ ฅ ๊ฐ์ ๋ฆฌํด ๊ฐ์ธ byte๋จ์(0~255)์ ๋ง์ถ์ด ์์คํค์ฝ๋ ๊ฐ์ ์ ์ฅํ๊ฒ ๋๋ค.

๋ณ์ a์ ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ๋ฌธ์ 'a'๋ฅผ ๋ฐ์ผ๋ฉด ๋ฌธ์ 'a'์ ์์คํค์ฝ๋ ๊ฐ์ด 97์ด a ๋ณ์์ ์ ์ฅ๋๋ค.
โถ๋ฒํผ์ ๋์ (\r, \n)
์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ๋ฌธ์ 'a'๋ฅผ ๋ฐ์๋ค๊ณ ํด์ ๋ฒํผ์ 'a'๋ง ์ ์ฅ๋๋ ๊ฒ์ ์๋๋ค.
์ฌ์ฉ์ ์ ๋ ฅ์ ์๋ฃํ์ ๋, enter ํค๋ฅผ ๋๋ฅด๊ฒ ๋๋๋ฐ ๋ฒํผ์๋ ์ด enterํค๊ฐ ๊ฐ์ง๋ ๋ณต๊ท ๋ฌธ์(Carriage return, ASCII 13)์ ๊ฐํ ๋ฌธ์(Line feed, ASCII 10)๊ฐ ํจ๊ป ์ ์ฅ๋๋ค.
↓ a ์ ๋ ฅ ์์ ๋ฒํผ์ ์ํ
| ๋ฌธ์ | a | \r | \n |
| ASCII | 97 | 13 | 10 |
์ฌ๊ธฐ์ int ๋ณ์์๋ ํ๋์ ์ ์ ๊ฐ๋ง ์ ์ฅํ ์ ์๋๋ฐ ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ์ธํด ๋ฒํผ์ 3๊ฐ์ ์ ์ ๊ฐ์ด ๋ด๊ธด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ 'a'๋ฌธ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ 3๊ฐ์ int ๋ณ์๊ฐ ํ์ํ ์ ์ด๋ค.
โถPrintStream / ํ๊ธ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ
read() ๋ฉ์๋๋ก 1byte์ฉ ์ ์ฅ๋ ๋ณ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ System.in.write() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
System.in.write()๋ ๋ณ์์ ์ ์ฅ๋ 1byte์ ๊ฐ์ ์ฝ์ด๋ธ๋ค.
read() ํจ์์์ 'a'๋ผ๋ ๋ฌธ์๋ ๊ฐ๊ฐ 97 / 13 / 10 ์ธ ๊ฐ์ ๊ฐ์ ํฉ์ผ๋ก ์ด๋ค์ ธ ์์์ ์ ์ ์๋ค.
๋ฐ๋๋ก write() ํจ์๋ก 'a'๋ผ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ 97 / 13 / 10 ์ธ ๊ฐ์ ๊ฐ์ด ๋ชจ์ฌ์ผ ํ๋ค.


์ฌ๊ธฐ์ ์ฌ์ฉ์ ์ ๋ ฅ์ด ํ๊ธ์ด๋ฉด ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ฐ, ํ ์ค ์ผ์ด์ ์ ๋์ฝ๋๋ ์๋ฐ์์๋ 3byte์ด๊ธฐ ๋๋ฌธ์ด๋ค.


์ฌ์ฉ์ ์ ๋ ฅ์ 'ใฑ'์ผ๋ก ๋ฐ์ผ๋ฉด ์ด 5๊ฐ์ ๋ณ์์ ์ ์ฅ์ด ๋๋๋ฐ ์์ ๋งํ ํ๊ธ์ด 3byte์ผ๋ก ์ด๋ค์ ธ ์๊ธฐ ๋๋ฌธ์ด๋ค.
\r๊ณผ \n ๊ฐ์ ์ ์ธํ๋ฉด ํ๊ธ 'ใฑ'์ 227 / 132 / 177์ ํฉ์ผ๋ก ์ด๋ค์ ธ ์๋ ๋ฌธ์์ด๋ค.
์์ ๊ฐ์ด ๋ค์ฏ ๊ฐ์ ๋ณ์๋ฅผ write() ํจ์๋ฅผ ์ด์ฉํด์ ์ถ๋ ฅํ๋ฉด ์ ๋ ฅ ๊ฐ 'ใฑ'์ ์ ๋๋ก ์ถ๋ ฅํ ์ ์๋ค.


โถwhile ๋ฌธ ์ฌ์ฉ

๋ณดํต์ while๋ฌธ์ ์ฌ์ฉํด์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๊ณ ๊ฐ์ ์ถ๋ ฅํด์ค๋ค.
์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ ๋๋ง๋ค \r, \n์ด ํจ๊ป ์ ์ฅ๋๋ฏ๋ก ๋ 2byte๊ฐ ์ถ๊ฐ๋ก ์ ์ฅ๋๋ค.
์์ฒ๋ผ while๋ฌธ์ ์ด์ํด InputStream / OutStream์ ์ฌ์ฉํ ๋๋ ์๋ชป๋ ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ํ์ด ๋๊ธฐ ๋๋ฌธ์ try / catch ๋ฌธ์ ์ด์ฉํด์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค. (IDE์์ ์๋์ผ๋ก ์์ฑํด์ค๋ค.)
์๋ชป๋ ๋ถ๋ถ ์ง์ ์ ๋ ๊ฐ์ฌํฉ๋๋ค.
'Programming > Java, Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] XMLํ์ผ๊ณผ ์๋ฐ(Java)๋ก ํ์ฑ(parsing)ํ๊ธฐ (0) | 2021.12.29 |
|---|---|
| <ํ ์ด ํ๋ก์ ํธ ํ๊ณ ๋ก> ์๋ฐ ์ค์(Java Swing)์ ์ด์ฉํ GUI ํ๋ก๊ทธ๋จ(ft. DBeaver) (0) | 2021.12.29 |
| ์๋ฐ[Java] ์ธํฐํ์ด์ค[Interface] ์ฌ์ฉ๊ณผ ์ด์ (1) | 2021.12.29 |
| ์๋ฐ[Java] ์ ๊ทผ ์ ์ด์[Access modifier] (0) | 2021.12.29 |
| ์๋ฐ(Java) ์ฌ์ฉ์ ์ /์ถ๋ ฅ๊ณผ ๋ฒํผ(butter) (0) | 2021.12.29 |