2022. 4. 15. 16:04ใJAVA/์๋ฐ์ ์ ์
1๏ธโฃ ๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์์ ์ฐธ์กฐํ ๋งค๊ฐ๋ณ์
์๋ฐ์์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์๋ก ์ง์ ํ ๊ฐ์ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ณต์ฌํด์ ๋๊ฒจ์ค๋ค.
๋งค๊ฐ๋ณ์์ ํ์ ์ด ๊ธฐ๋ณธํ primitive type์ผ ๋๋ ๊ธฐ๋ณธํ ๊ฐ์ด ๋ณต์ฌ๋๊ฒ ์ง๋ง,
์ฐธ์กฐํ reference type ์ด๋ฉด ์ธ์คํด์ค์ ์ฃผ์๊ฐ ๋ณต์ฌ๋๋ค.
๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์ : ๋ณ์์ ๊ฐ์ ์ฝ๊ธฐ๋ง ํ ์ ์๋ค. (read only)
์ฐธ์กฐํ ๋งค๊ฐ๋ณ์ : ๋ณ์์ ๊ฐ์ ์ฝ๊ณ ๋ณ๊ฒฝํ ์ ์๋ค. (read & write)
- ๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์
change(int x)๋ ๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์
๋ฐ๋ผ์ d.x์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค. ์๋ํ๋ฉด ์๋ณธ์ด ์๋ ๋ณต์ฌ๋ณธ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์๋ณธ์๋ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์๋๋ค!
-> ๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์๋ ๋ณ์์ ์ ์ฅ๋ ๊ฐ๋ง ์ฝ์ ์ ์์ ๋ฟ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ฐธ์กฐํ ๋งค๊ฐ๋ณ์
change(Date d) ๋ ์ฐธ์กฐํ ๋งค๊ฐ๋ณ์
-> ๋ฐ๋ผ์ ์ด๋ฒ์๋ d.x์ ๊ฐ์ด ๋ณ๊ฒฝ๋์๋ค. ์๋ํ๋ฉด change(Data d) ๋งค๊ฐ๋ณ์๊ฐ ์ฐธ์กฐํ์ด๋ผ์ ๊ฐ์ด ์๋๋ผ ๊ฐ์ด ์ ์ฅ๋ ์ฃผ์๋ฅผ change() ์ ๋๊ฒจ์ฃผ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ฝ์ด์ค๋๊ฒ ๋ฟ๋ง ์๋๋ผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
์ด์ ์์ ์๋ ๋ฌ๋ฆฌ change() ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐธ์กฐํ์ผ๋ก ์ ์ธํ๊ธฐ ๋๋ฌธ์ x์ ๊ฐ์ด ์๋ ์ฃผ์๊ฐ ๋งค๊ฐ๋ณ์ d์ ๋ณต์ฌ๋์๋ค.
์ด์ main๋ฉ์๋์ ์ฐธ์กฐ๋ณ์ d์ change ๋ฉ์๋์ ์ฐธ์กฐ๋ณ์ d๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
2๏ธโฃ ์ฐธ์กฐํ ๋ฐํํ์
๋งค๊ฐ๋ณ์๋ฟ๋ง ์๋๋ผ ๋ฐํํ์ ๋ ์ฐธ์กฐํ์ด ๋ ์ ์๋ค.
๋ฐํํ์ ์ด ์ฐธ์กฐํ์ด๋ผ๋ ๊ฒ์ ๋ฉ์๋๊ฐ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๋ฐํํ๋ค๋ ๊ฒ์ด๋ค.
3๏ธโฃ ์ฌ๊ท ํธ์ถ recursive call
void method() {
method();
}
-> ๋ฉ์๋์ ๋ด๋ถ์์ ๋ฉ์๋ ์์ ์ ๋ค์ ํธ์ถํ๋ ๊ฒ์ ์ฌ๊ทํธ์ถ์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ท ํธ์ถ์ ํ๋ ๋ฉ์๋๋ฅผ ์ฌ๊ท ๋ฉ์๋๋ผ๊ณ ํ๋ค.
๊ทธ๋ฅ ์ค๋ก์ง ์ฌ๊ทํธ์ถ์ ํ๋ฉด ๋ฌดํ ๋ฐ๋ณต์ ๋น ์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ท ํธ์ถ๋ ์กฐ๊ฑด๋ฌธ์ด ํ์์ ์ผ๋ก ๋ฐ๋ผ๋ค๋๋ค.
์ฌ๊ทํธ์ถ์ ๋ฐ๋ณต๋ฌธ๊ณผ ์ ์ฌํ ์ ์ด ๋ง์ผ๋ฉฐ, ๋๋ถ๋ถ์ ์ฌ๊ทํธ์ถ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ๋ณต๋ฌธ์ ๊ทธ์ ๊ฐ์ ๋ฌธ์ฅ์ ๋ฐ๋ณตํด์ ์ํํ๋ ๊ฒ์ด์ง๋ง, ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋ฐ๋ณต๋ฌธ๋ณด๋ค ๋ช ๊ฐ์ง ๊ณผ์ , ์๋ฅผ ๋ค๋ฉด ๋งค๊ฐ๋ณ์ ๋ณต์ฌ์ ์ข ๋ฃ ํ ๋ณต๊ทํ ์ฃผ์ ์ ์ฅ ๋ฑ, ์ด ์ถ๊ฐ๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ๋ณด๋ค ์ฌ๊ทํธ์ถ์ ์ํ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ๊ทํธ์ถ์ ์ฌ์ฉํ๋ ์ด์ ๋?
์ฌ๊ทํธ์ถ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ค.
๋ช ๊ฒน์ ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌด์ผ๋ก ๋ณต์กํ๊ฒ ์์ฑ๋ ์ฝ๋๊ฐ ์ฌ๊ท ํธ์ถ๋ก ์์ฑํ๋ฉด ๋ณด๋ค ๋จ์ํ ๊ตฌ์กฐ๋ฅด ๋ฐ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
-> 24
์ฌ๊ทํธ์ถ์ ๋ํ์ ์ธ ์๋ ํฉํ ๋ฆฌ์ผ ๊ตฌํ๋ ๊ฒ์ด๋ค.
f(n) = n * f(n-1), ๋จ f(1) = 1
3๏ธโฃ ํด๋์ค ๋ฉ์๋(static ๋ฉ์๋) ์ ์ธ์คํด์ค ๋ฉ์๋
๋ฉ์๋ ์์ static์ด ๋ถ์ด ์์ผ๋ฉด ํด๋์ค ๋ฉ์๋๊ณ , ๋ถ์ง ์์ผ๋ฉด ์ธ์คํด์ค ๋ฉ์๋์ด๋ค.
ํด๋์ค ๋ฉ์๋๋ ํด๋์ค๋ณ์์ฒ๋ผ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋ 'ํด๋์ค์ด๋ฆ.๋ฉ์๋์ด๋ฆ' ๊ณผ ๊ฐ์ ์์ผ๋ก ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ๋ฉด์ ์ธ์คํด์ค ๋ฉ์๋๋ ๋ฐ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ๋ง ํธ์ถํ ์ ์๋ค.
์ธ์คํด์ค ๋ฉ์๋
- ์ธ์คํด์ค ์์ฑ ํ '์ฐธ์กฐ๋ณ์.๋ฉ์๋์ด๋ฆ()' ํธ์ถ
- ์ธ์คํด์ค ๋ฉค๋ฒ(iv, im) ๊ณผ ๊ด๋ จ๋ ์์ ์ ํ๋ ๋ฉ์๋
- ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์(iv) ์ฌ์ฉ ๊ฐ๋ฅ
์ธ์คํด์ค ๋ฉ์๋๋ ์ธ์คํด์ค ๋ณ์์ ๊ด๋ จ๋ ์์ ์ ํ๋, ์ฆ ๋ฉ์๋์ด ์์ ์ ์ํํ๋๋ฐ ์ธ์คํด์ค ๋ณ์๋ฅผ ํ์๋ก ํ๋ ๋ฉ์๋์ด๋ค.
static ๋ฉ์๋
- ๊ฐ์ฒด ์์ฑ ์์ด 'ํด๋์ค์ด๋ฆ.๋ฉ์๋์ด๋ฆ()'์ผ๋ก ํธ์ถ
- ์ธ์คํด์ค ๋ฉค๋ฒ(iv,im) ๊ณผ ๊ด๋ จ์๋ ์์ ์ ํ๋ ๋ฉ์๋
- ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์(iv)๋ฅผ ์ฌ์ฉ ๋ถ๊ฐ
ํด๋์ค ๋ฉ์๋๋ ์ธ์คํด์ค์ ๊ด๊ณ์๋(์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๋) ๋ฉ์๋๋ฅผ ํด๋์ค ๋ฉ์๋(static ๋ฉ์๋)๋ก ์ ์ํ๋ค.
1. ํด๋์ค๋ฅผ ์ค๊ณํ ๋ ๋ฉค๋ฒ๋ณ์ ์ค ๋ชจ๋ ์ธ์คํด์ค์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ static์ ๋ถ์ธ๋ค.
: ์์ฑ๋ ๊ฐ ์ธ์คํด์ค๋ ์๋ก ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ์ธ์คํด์ ๋ณ์๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ ์งํ๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋ ์ธ์คํด์ค์์ ๊ฐ์ ๊ฐ์ด ์ ์ง๋์ด์ผ ํ๋ ๋ณ์๋ static์ ๋ถ์ฌ์ ํด๋์ค ๋ณ์๋ก ์ ์ํด์ผํ๋ค.
2. ํด๋์ค ๋ณ์ (static ๋ณ์)๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์๋ ์ฌ์ฉํ ์ ์๋ค.
: static ์ด ๋ถ์ ๋ณ์๋ ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ ์ด๋ฏธ ์๋์ ์ผ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค.
3. ํด๋์ค ๋ฉ์๋ (static ๋ฉ์๋)๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
: ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค๊ฐ ๋ฐ๋์ ์กด์ฌํด์ผ๋ง ์ฌ์ฉํ ์ ์๋๋ฐ, ํด๋์ค ๋ฉ์๋๋ ์ธ์คํด์ค ์์ฑ ์์ด ํธ์ถ๊ฐ๋ฅํ๋ฏ๋ก ํด๋์ค ๋ฉ์๋๊ฐ ํธ์ถ๋์์ ๋ ์ธ์คํด์ค๊ฐ ์กด์ฌํ์ง ์์ ์๋ ์๋ค. ๊ทธ๋์ ํด๋์ค ๋ฉ์๋์์ ์ธ์คํด์ค ๋ณ์์ ์ฌ์ฉ์ ๊ธ์งํ๋ค.
๋ฐ๋ฉด์ ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค ๋ฉ์๋์์๋ static์ด ๋ถ์ ๋ฉค๋ฒ๋ค์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ธ์ ๋ ๊ฐ๋ฅํ๋ค. ์ธ์คํด์ค ๋ณ์๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ static ๋ณ์๊ฐ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค.
4. ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, static์ ๋ถ์ด๋ ๊ฒ์ ๊ณ ๋ คํ๋ค.
: ๋ฉ์๋์ ์์ ๋ด์ฉ ์ค์์ ์ธ์คํด์ค๋ณ์๋ฅผ ํ์๋ก ํ๋ค๋ฉด static์ ๋ถ์ผ ์ ์๋ค. ๋ฐ๋๋ก ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด static์ ๋ถ์ด์. ๋ฉ์๋ ํธ์ถ์๊ฐ์ด ์งง์์ง๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
static์ ์ ๋ถ์ธ ๋ฉ์๋๋ ์คํ ์ ํธ์ถ๋์ด์ผํ ๋ฉ์๋๋ฅผ ์ฐพ๋ ๊ณผ์ ์ด ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฐ๋ค.
- ํด๋์ค์ ๋ฉค๋ฒ๋ณ์ ์ค ๋ชจ๋ ์ธ์คํด์ค์ ๊ณตํต๋ ๊ฐ์ ์ ์งํด์ผํ๋ ๊ฒ์ด ์๋์ง ์ดํด๋ณด๊ณ ์์ผ๋ฉด, static์ ๋ถ์ฌ์ค๋ค.
- ์์ฑํ ๋ฉ์๋ ์ค์์ ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ static์ ๋ถ์ผ ๊ฒ์ ๊ณ ๋ คํ๋ค.
-> ํด๋์ค ๋ฉ์๋๋ ๊ฐ์ฒด ์์ฑ์์ด ๋ฐ๋ก ํธ์ถ์ด ๊ฐ๋ฅํ๊ณ , ์ธ์คํด์ค ๋ฉ์๋๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ ํ์ ํธ์ถ ๊ฐ๋ฅํ๋ค.
4๏ธโฃ ํด๋์ค ๋ฉค๋ฒ์ ์ธ์คํด์ค ๋ฉค๋ฒ๊ฐ์ ์ฐธ์กฐ์ ํธ์ถ
๊ฐ์ ํด๋์ค์ ์ํ ๋ฉค๋ฒ๋ค ๊ฐ์๋ ๋ณ๋์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์๋ก ์ฐธ์กฐ ๋๋ ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
๋จ ํด๋์ค๋ฉค๋ฒ๊ฐ ์ธ์คํด์ค ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐ ๋๋ ํธ์ถํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์๋ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ผํ๋ค.
-> ์ธ์คํด์ค ๋ฉค๋ฒ๊ฐ ์กด์ฌํ๋ ์์ ์ ํด๋์ค ๋ฉค๋ฒ๋ ํญ์ ์กด์ฌํ์ง๋ง, ํด๋์ค ๋ฉค๋ฒ๊ฐ ์กด์ฌํ๋ ์์ ์ ์ธ์คํด์ค ๋ฉค๋ฒ๊ฐ ์กด์ฌํ์ง ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํด๋์ค ๋ฉค๋ฒ๋ ์ธ์ ๋ ์ฐธ์กฐ ๋๋ ํธ์ถ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค ๋ฉค๋ฒ๊ฐ ํด๋์ค ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋๋ค.
ํด๋์ค ๋ฉค๋ฒ ๊ฐ์ ์ฐธ์กฐ ๋๋ ํธ์ถ ์ญ์ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค.
๊ทธ๋ฌ๋ ์ธ์คํด์ค ๋ฉค๋ฒ๋ ๋ฐ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ์๋ง ์ฐธ์กฐ ๋๋ ํธ์ถ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํด๋์ค ๋ฉค๋ฒ๊ฐ ์ธ์คํด์ค ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐ, ํธ์ถํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ์ ํ๋ค.
ํ์ง๋ง ์ธ์คํด์ค ๋ฉค๋ฒ๊ฐ์ ํธ์ถ์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค. ์๋ํ๋ฉด ํ๋์ ์ธ์คํด์ค ๋ฉค๋ฒ๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ์ธ์คํด์ค๊ฐ ์ด๋ฏธ ์์ฑ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ ์ฆ ๋ค๋ฅธ ์ธ์คํด์ค ๋ฉค๋ฒ๋ค๋ ๋ชจ๋ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
'JAVA > ์๋ฐ์ ์ ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] 11. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ7. ๋คํ์ฑ (0) | 2022.04.21 |
---|---|
[JAVA] 11. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ4. ์ค๋ฒ๋ก๋ฉ, ์์ฑ์, ๋ณ์์ ์ด๊ธฐํ (0) | 2022.04.17 |
[JAVA] 11. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ2. return๋ฌธ, JVM ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (0) | 2022.04.15 |
[JAVA] 9. String ๋ฐฐ์ด, ๋ค์ฐจ์ ๋ฐฐ์ด (0) | 2022.04.11 |
[JAVA] 8. ๋ฐฐ์ด (0) | 2022.04.08 |