π 1. κ°λ³μΈμ
μΈμ κ°μκ° μΌμ νμ§ μμ λ©μλλ₯Ό μ μν λ κ°λ³μΈμ(varargs)λ₯Ό μ¬μ©ν μ μλ€.
κ°λ³μΈμ λ©μλλ₯Ό νΈμΆνλ©΄, κ°μ₯ λ¨Όμ μΈμμ κ°μμ κΈΈμ΄κ° κ°μ λ°°μ΄μ λ§λ€κ³ μΈμλ€μ μ΄ λ°°μ΄μ μ μ₯νμ¬ κ°λ³μΈμ λ©μλλ₯Ό 건λ€μ€λ€.
μ λ ₯λ°μ int μΈμλ€μ ν©μ κ³μ°ν΄ μ£Όλ κ°λ³μΈμ λ©μλλ₯Ό λ€μκ³Ό κ°μ΄ λ§λ€ μ μλ€.
static int sum(int... args) {
int sum = 0;
for (int arg : args)
sum += arg;
return sum;
}
π 2. κ°λ³μΈμμ λ¬Έμ μ κ³Ό κ·Έμ λ°λ₯Έ ν΄κ²°μ±
κ°λ³μΈμλ₯Ό μλμ κ°μ΄ μλͺ» ꡬνν μλ μλ€.
static int min(int... args) {
if(args.length == 0)
throw new IllegalArgumentException("μΈμκ° 1κ° μ΄μ νμν©λλ€.");
int min = args[0];
for(int i = 1; i <args.length; i++)
if(args[i] < min)
min = args[i];
return min;
}
μμ μ½λμμ μλμ κ°μ λ¬Έμ μ μ΄ μλ€.
- μΈμλ₯Ό 0κ° λ°μ μ μλ€.
- μΈμλ₯Ό 0κ° λ°λ κ²½μ° μ»΄νμΌνμμ΄ μλ λ°νμμ μ€ν¨νλ€.
- minμ μ΄κΈ°κ°μ Integer.MAX_VALUEλ‘ μ€μ νμ§ μμλ€.
- λ λͺ λ£ν for-eachλ¬Έμ μ¬μ©ν μ μλ€.
λ€μ μ½λμ²λΌ 맀κ°λ³μλ₯Ό 2κ° λ°μΌλ©΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
static int min(int firstArg, int... remainingArgs) {
int min = firstArg;
for(int arg : remainingArgs)
if(arg < min)
min = arg;
return min;
}
π 3. μ±λ₯ κ°μ
μ±λ₯μ λ―Όκ°ν μν©μ΄λΌλ©΄ κ°λ³μΈμκ° κ±Έλ¦Όλμ΄ λλ€. κ°λ³μΈμ λ©μλλ νΈμΆλ λλ§λ€ λ°°μ΄μ μλ‘ νλ ν λΉνκ³ μ΄κΈ°ννκΈ° λλ¬Έμ΄λ€.
μ΄λ° κ²½μ° λ€μ€μ μλ₯Ό μ΄μ©νλ€λ©΄ μ±λ₯μ κ°μ ν μ μλ€. μλ₯Ό λ€μ΄ ν΄λΉ λ©μλ νΈμΆμ 95%κ° μΈμ 3κ° μ΄νλ‘ μ¬μ©νλ€κ³ ν΄λ³΄μ.
- νΈμΆμ 95%
μΈμ 0κ°, μΈμ 1κ°, μΈμ 2κ°, μΈμ 3κ°μΈ κ²½μ° - νΈμΆμ 5%
μΈμ 4κ° μ΄μμΈ κ²½μ°
μλμ κ°μ΄ λ€μ€μ μ λ©μλλ₯Ό μ΄μ©νμ¬ λ¬Έμ μ μ ν΄κ²°ν μ μλ€.
// 95%λ₯Ό λ΄λΉ
public void foo() {}
public void foo(int a1) {}
public void foo(int a1, int a2) {}
public void foo(int a1, int a2, int a3) {}
// 5%λ₯Ό λ΄λΉ
public void foo(int a1, int a2, int a3, int... rest) {}
ν΄λΉ κΈμ Joshua Bloch λμ 'Effective Java 3/E'λ₯Ό μ°Έκ³ νμμ΅λλ€.