하나의 함수에서 매개변수를 동적으로 받을수 있는 방법으로 가변인자를 사용 할 수 있다.
(가변인자는 자바 1.5부터 지원된다고 한다.)
비슷한 방법으로 오버로딩을 볼 수 있는데, 오버로딩은 함수 정의를 여러개 해야한다.
public class test {
public static void main(String[] args) {
test t = new test();
t.variable("A");
t.variable("A","B");
t.variable("A","B","C");
}
public void variable(String s) {
System.out.println(s);
}
public void variable(String s, String ss) {
System.out.println(s);
System.out.println(ss);
}
public void variable(String s, String ss, String sss) {
System.out.println(s);
System.out.println(ss);
System.out.println(sss);
}
}
////////////Console////////////
A
A
B
A
B
C
정의된 매개변수보다 많거나 적은 매개변수를 넘기면 당연히 안된다.
가변인자
가변인자는 가변인자를 나타내는 기호(...)를 사용한다.
변수 타입뒤에 붙여주고 변수명을 쓰면 끝
public class test {
public static void main(String[] args) {
test t = new test();
t.variable();
t.variable("A");
t.variable("A","B");
t.variable("A","B","C");
t.variable("A","B","C","D");
}
public void variable(String... s) {
System.out.println(s);
}
}
////////////Console////////////
[Ljava.lang.String;@15db9742
[Ljava.lang.String;@6d06d69c
[Ljava.lang.String;@7852e922
[Ljava.lang.String;@4e25154f
[Ljava.lang.String;@70dea4e
가변인자는 전달인자를 0개부터 n개까지 넣을수 있다.
가변인자는 컴파일시 배열로 처리되기때문에 사용할때 주의해야한다. (0개나 1개도 마찬가지)
따라서 위 코드의경우 아래처럼 사용하면 값을 볼 수 있다.
배열의 값을 보여주기위해 Arrays.toString()
public class test {
public static void main(String[] args) {
test t = new test();
t.variable();
t.variable("A");
t.variable("A","B");
t.variable("A","B","C");
t.variable("A","B","C","D");
}
public void variable(String... s) {
System.out.println(Arrays.toString(s));
}
}
////////////Console////////////
[]
[A]
[A, B]
[A, B, C]
[A, B, C, D]
for 문으로 배열의 값을 하나씩 출력
public class test {
public static void main(String[] args) {
test t = new test();
t.variable();
t.variable("A");
t.variable("A","B");
t.variable("A","B","C");
t.variable("A","B","C","D");
}
public void variable(String... s) {
for(String str : s) {
System.out.println(str);
}
}
}
////////////Console////////////
A
A
B
A
B
C
A
B
C
D
배열로 처리되는만큼 배열로 리턴을 해도 문제 없다.
public class test {
public static void main(String[] args) {
test t = new test();
System.out.println(Arrays.toString(t.variable("A","B","C")));
}
public String[] variable(String... s) {
return s;
}
}
////////////Console////////////
[A, B, C]
'Java' 카테고리의 다른 글
[Java] 함수 실행시간 측정 (currentTimeMillis) (0) | 2020.06.01 |
---|---|
[Java] 맵에 키,값 있는지 확인(containsKey,containsValue) (0) | 2020.05.31 |
[Java] 자바 일년중에 몇일인지 구하기(Calendar) (0) | 2019.11.14 |
[Java] 해당 월의 말일 구하기(Calendar) (0) | 2019.10.21 |
[Java]배열과 리스트 초기화하는 방법 (0) | 2019.10.20 |