๐ก ์ค๋ฒ๋ก๋ฉ์ด๋?
ํ ํด๋์ค ๋ด์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ๋ ๊ฒ
๊ฐ์ ์ผ์ ํ์ง๋ง ๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅธ ๋ฉ์๋๊ฐ ํ์ํ ๋ ์ค๋ฒ๋ก๋ฉ์ ๊ตฌํํ๋ค. ์ค๋ฒ๋ก๋ฉ์ ํ๊ธฐ ์ํด์๋ ๋ฉ์๋ ์ด๋ฆ์ ๊ฐ๊ณ ๋งค๊ฐ๋ณ์ ํ์
์ด๋ ๊ฐ์(๋๋ ์์)๊ฐ ๋ฌ๋ผ์ผ ํ๋ค.
๐ค ์ค๋ฒ๋ก๋ฉ์ด ๋์ง ์๋ ๊ฒฝ์ฐ
- ๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐ์๊ฐ ๋ชจ๋ ๊ฐ๊ณ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ๋ง ๋ค๋ฅธ ๊ฒฝ์ฐ
int add(int a, int b) { return a+b; }
int add(int x, int y) { return x+y; }
- ๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐ์๊ฐ ๋ชจ๋ ๊ฐ๊ณ ๋ฐํ ํ์ ๋ง ๋ค๋ฅธ ๊ฒฝ์ฐ
int add(int x, int y) { return x+y; }
long add(int x, int y) { return (long)(x+y); }
๋ ๊ฒฝ์ฐ ๋ฉ์๋๋ฅผ ์ค๋ณต์ผ๋ก ์ ์ํ๋ค๊ณ ์ธ์ํ์ฌ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๐ฎ ์์ธ๋ก ์ค๋ฒ๋ก๋ฉ์ด ๋๋ ๊ฒฝ์ฐ
- ๋งค๊ฐ๋ณ์ ๊ฐ์์ ํ์ ๊ตฌ์ฑ์ ๊ฐ์๋ฐ ๋งค๊ฐ๋ณ์ ์ ์ธ ์์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ
long add(int x, long y) { return x+y; }
long add(long x, int y) { return x+y; }
์ด ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋งค๊ฐ๋ณ์์ ์์๋ฅผ ์ธ์ฐ์ง ์์๋ ๋๋ค.
๋ค๋ง ๋จ์ ๋ ์๋ค. Java์์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์์ ๋์ผํ ํ์
์ ์ธ์๋ฟ๋ง ์๋๋ผ ์๋ ํ๋ณํ์ด ๊ฐ๋ฅํ ํ์
์ ์ธ์๋ ๋๊ฒจ์ค ์ ์๋ค. ์๋ฅผ ๋ค์ด, long ํ์
์ผ๋ก ์ ์ธ๋ ๋งค๊ฐ๋ณ์์ ์๋ ํ๋ณํํ ์ ์๋ int ํ์
์ ๊ฐ์ ๋๊ฒจ์ค ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์์ ๊ฐ์ด ์ค๋ฒ๋ก๋ฉ์ ํ๊ฒ ๋๋ฉด ๋ ๋งค๊ฐ๋ณ์ ๋ชจ๋ int ํ์
์ ์ธ์๋ฅผ ๋๊ธฐ๊ฒ ๋์์ ๋ ๋ ๋ฉ์๋ ์ค ์ด๋ ๊ฒ์ด ํธ์ถ๋ ๊ฒ์ธ์ง ์ ์ ์๊ฒ ๋์ด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๐ธ ์ค๋ฒ๋ก๋ฉ์ ํ๋ ์ด์
- ๋ฉ์๋ ์์ฑ์๋ ๋ฉ์๋ ์ด๋ฆ์ ์ง๋ ๋ฐ ๊ณ ๋ฏผ์ ๋ ์ ์๋ค.
- ๋ฉ์๋ ์ฌ์ฉ์๋ ๋ฉ์๋ ์ด๋ฆ์ ์ผ์ผ์ด ์ธ์ฐ์ง ์์๋ ๋๋ค.
- ๋ฉ์๋์ ์ด๋ฆ์ ์ ์ฝํ ์ ์๋ค.
println ๋ฉ์๋๊ฐ ์ค๋ฒ๋ก๋ฉ์ ๋ํ์ ์ธ ์์์ด๋ค.
๐ก ๊ฐ๋ณ์ธ์(varargs)
๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ๊ฐ์๋ฅผ ๋์ ์ผ๋ก ์ง์ ํด์ฃผ๋ ๊ธฐ๋ฅ
๊ฐ์ ๋์์ ํ๋๋ฐ ๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๋ค๋ฅธ ๋ฉ์๋๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ค๋ฒ๋ก๋ฉ์ ํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋๋ง๋ค ๋งค๋ฒ ๋งค๊ฐ๋ณ์์ ๊ฐ์๊ฐ ๋ฌ๋ผ์ง๋ค๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํ์ฌ ์ค๋ฒ๋ก๋ฉ์ ํ ์๋ ์๋ค.
์๋ฅผ ๋ค์ด ์ธ์๋ค์ ๋ชจ๋ ๋ํ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ค๊ณ ํ์. ๋ง์ฝ ๋ํ๋ ค๊ณ ํ๋ ์ธ์๋ค์ด 2๊ฐ ๋๋ 3๊ฐ๋ก ๊ณ ์ ๋์ด ์๋ค๋ฉด ์ค๋ฒ๋ก๋ฉ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ํ๋ ค๊ณ ํ๋ ์ธ์์ ๊ฐ์๊ฐ ํญ์ ๋ฐ๋๋ค๋ฉด ์๋ฐฑ ํน์ ์์ฒ ๋ฒ ์ค๋ฒ๋ก๋ฉํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๊ฐ๋ณ์ธ์ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
๐ธ ์ ์ธ ๋ฐฉ๋ฒ
- 'ํ์ ... ๋ณ์๋ช ' ํ์์ผ๋ก ์ ์ธํ๋ค.
// PrintStream ํด๋์ค์ printf()
public PrintStream printf(String format, Object... args)
- ๊ฐ๋ณ์ธ์ ์ธ ๋งค๊ฐ๋ณ์๊ฐ ๋ ์๋ค๋ฉด ๊ฐ๋ณ์ธ์๋ฅผ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ ์ธํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ๋ณ์ธ์์ธ์ง ์๋์ง ๊ตฌ๋ณํ ์ ์์ด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
// ๊ฐ๋ณ์ธ์๊ฐ ๋ค๋ฅธ ๋งค๊ฐ๋ณ์๋ณด๋ค ๋จผ์ ์ ์ธ๋๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
public PrintStream printf(Object... args, String format)
๐ธ ์ด์ฉ ๋ฐฉ๋ฒ
๊ฐ๋ณ์ธ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ธ์์ ๊ฐ์์ ๊ธธ์ด๊ฐ ๊ฐ์ ๋ฐฐ์ด์ด ์๋์ผ๋ก ์์ฑ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์๋ค์ ์ด ๋ฐฐ์ด์ ์ ์ฅํ์ฌ ๊ฐ๋ณ์ธ์ ๋ฉ์๋์ ๋๊ฒจ์ค๋ค. ๋ฉ์๋ ์์์๋ ๊ทธ ๋ฐฐ์ด์ ํตํด ๋์ด์จ ๊ฐ๋ค์ ์ด์ฉํ ์ ์๋ค. ์ฐธ๊ณ ๋ก ๋ฐฐ์ด ์์ฒด๋ ๊ฐ๋ณ์ธ์๋ก ๋๊ธธ ์ ์๋ค.
์ธ์์ ๊ฐ์๋ ์๋์ผ๋ก ์์ฑ๋๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ก ์ ์ ์๋ค.
static int sum(int... args) {
int argsNum = args.length; // ๋์ด์จ ๊ฐ๋ณ์ธ์์ ๊ฐ์
}
๊ฐ๋ณ์ธ์๋ฅผ ์ด์ฉํ๋ฉด ํด๋น ๋งค๊ฐ๋ณ์๋ก ๋์ด์ค๋ ์ธ์๊ฐ ์๋๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๋ค. ์ธ์๋ฅผ ์๋ตํ๊ณ ์ถ์ ๋, ๋จ์ํ ๋ฐฐ์ด ํ์
์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ค๋๋ก ๋์ด ์๋ค๋ฉด null์ด๋ ๊ธธ์ด๊ฐ 0์ธ ๋ฐฐ์ด์ด๋ ์ธ์๋ฅผ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค. ๋ฐ๋ฉด ๊ฐ๋ณ์ธ์๋ฅผ ์ด์ฉํ๋ฉด ์ธ์๋ฅผ ์๋ตํ ์ ์๋ค.
๊ฐ๋ณ์ธ์ ๊ฒ์ฌํ๊ธฐ
๊ฐ๋ณ์ธ์ ๋ฉ์๋๋ ์ธ์๊ฐ ์๋๋ผ๋ ๋์ํ ์ ์์ง๋ง, ์ธ์๊ฐ 1๊ฐ ์ด์ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋๋ ์ธ์๊ฐ 0๊ฐ ๋์ด ์์ ๋ ์ด๋ฅผ ๊ฒ์ฌํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
ใ์ดํํฐ๋ธ ์๋ฐใ์์๋ ์ธ์๋ค ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค์ด ์ค๋ช
ํ๋ค.
static int min(int... args) {
if (args.length == 0) // ๊ฐ๋ณ์ธ์ ๊ฐ์ด 0๊ฐ๋ผ๋ฉด
throw new IllegalArgumentExeption("์ธ์๊ฐ 1๊ฐ ์ด์ ํ์ํจ"); // ์์ธ ๋์ง๊ธฐ
int min = args[0];
for (int i=0 ; i<args.length ; i++){
if (args[i] < min)
min = args[i];
}
return min;
}
๊ฐ๋จํ๊ฒ ์์ ๊ฐ์ด ์ธ์๊ฐ 0๊ฐ ๋์ด์จ ์ํฉ์ ๋ํด ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ ์ค ์์์ผ๋…์ด๋ ์๋ชป ๊ตฌํํ ์์์ด๋ค!
์์์ ์ธ๊ธํ๋ฏ์ด, ๊ฐ๋ณ์ธ์ ๊ฐ์์ ๋์ผํ ๊ธธ์ด์ ๋ฐฐ์ด์ด ์๋์ผ๋ก ์์ฑ๋๋ ์์ ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋์ด๋ค. ์ฆ, ๋ฐํ์์ ์ธ์ ๊ฐ์๋ฅผ ์ ์ ์๋๋ฐ, ์ ์ฝ๋๋ก ๊ตฌํํ ๋ฉ์๋์ 0๊ฐ์ ์ธ์๊ฐ ๋์ด๊ฐ๋ฉด ๋ฐํ์์ ์คํจํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ์์ ๊ฐ์๋ฅผ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ์๋ ์ฝ๋์ด๋ค.
static int min(int firstArg, int... remainingArgs){
int min = firstArg;
for (int arg : remainingArgs){
if (arg < min)
min = arg;
}
return min;
}
๐ค ์ฑ๋ฅ์ ๋ฌธ์ ๋ ์์๊น?
๊ฐ๋ณ์ธ์ ๋ฉ์๋๋ ํธ์ถ๋ ๋๋ง๋ค ์๋์ผ๋ก ์๋ก์ด ๋ฐฐ์ด์ ํ ๋นํ๊ณ ์ด๊ธฐํํ๋ค. ์ฌ์ฉ์๋ ํธ๋ฆฌํ์ง๋ง ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ค์ํ๋ค๋ฉด ์ถ์ฒํ์ง ์๋๋ค.
๐ ์ ์ํ ์
๊ฐ๋ณ์ธ์๋ฅผ ์ ์ธํ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ก๋ฉํ๋ฉด ๋ฉ์๋๋ฅผ ํธ์ถํ์ ๋ ํธ์ถ๋ ๋ฉ์๋๊ฐ ์ฒ์ ๋ฉ์๋์ธ์ง ์ค๋ฒ๋ก๋ฉ๋ ๋ฉ์๋์ธ์ง ๊ตฌ๋ณํ์ง ๋ชปํ๋ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๊ฐ๋ฅํ ๊ฐ๋ณ์ธ์ ๋ฉ์๋๋ ์ค๋ฒ๋ก๋ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค.
๐ Reference
• Java์ ์ ์ 3ํ, ๋จ๊ถ์ฑ, ๋์ฐ์ถํ.
• ์ดํํฐ๋ธ ์๋ฐ 3/E, ์กฐ์์ ๋ธ๋กํฌ, ํ๋ก๊ทธ๋๋ฐ์ธ์ฌ์ดํธ.
'Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์์ฑ์(constructor)๋? (2) | 2023.05.14 |
---|---|
[Java] ๋ณ์(variable)์ ๋ฉ์๋(method) (0) | 2023.05.13 |
[Java] ํด๋์ค๋? (0) | 2023.05.13 |