가변인자(varargs) ...String
0 .개요
가변인자는 메서드의 매개변수를 동적으로 처리할 수 있도록 해준다.
이를 사용하면 메서드 호출 시 전달되는 인자의 개수를 동적으로 변경할 수 있다.
public void exampleMethod(String... strings) {
// 가변인자로 선언된 문자열 배열에 대한 처리
// strings는 문자열 배열로 처리됨
}
위의 exampleMethod() 메서드에 'String...'은 가변인자를 나타내는 문법이다.
string이라는 문자열 배열이 선언되고 메서드가 호출될 때 넘겨받은 인자들이 이 배열로 묶어 처리된다.
메서드를 호출하고자 할때 인수의 갯수가 가변적일 때 가변인수를 처리하면 손 쉽게 처리할 수 있다.
또한 가변인자는 다른 인자와 함께 사용할 수 있다.
예를들어 고정적인 String타입의 인수 하나와, 가변적인 String타입의 인수가 여러개 있다고 가정했을 때
public void exampleMethod(String prefix, String... strings) {
// 가변인자로 선언된 문자열 배열에 대한 처리
// prefix와 함께 처리됨
}
위 메소드를 exampleMethod("fruits: ", "apple", "banana", "cherry")와 같이 호출하면,
prefix는 "fruits: "가 되고, strings는 {"apple", "banana", "cherry"}가 된다.
1.사용가능한 자료형
- 배열을 포함한 모든 참조자료형 (String, Object, List, Map, Inteager .. ) 등 모든 객체형 자료형이 가변인자로 사용가능
- 반면, 기본 자료형은 가변인자로서 사용할 수 없다.
- 기본자료형을 가변인자로 사용하기 위해서는 래퍼 클래스(wrapper class)를 이용해야한다.
예를들어
int대신 Inteager
float, double 대신 Double
boolean 대신 Boolean 등을 사용할 수 있다.
2. 활용
그렇다면, 가변인자를 사용하는 이유는 무엇일까?
String을 여러개 매개변수로 넣으려면 List형태를 활용하면 되지 않을까? (심지어, 같은 for문을 사용하는데도 말이다.)
List를 활용해도 동일한 기능을 구현할 수 있다. 다만 가변인자('...')를 사용하면 인자의 개수가 가변적일때 간단하게 처리할 수 있다는 장점이 있다.
예를들어 다음과 같은 메서드가 있다고 가정해보자
public void printArgs(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
public void printArgs(List<String> args) {
for (String arg : args) {
System.out.println(arg);
}
}
두 메서드는 매개변수의 타입외에는 차이가 없고, 기능적으로 동일하다. 다만 해당 메서드를 호출함에 있어서
// 가변인수 사용
printArgs("Hello", "World");
// List사용
List<String> args = Arrays.asList("Hello", "World");
printArgs(args); // List 사용
따라서 가변인자는('...')는 호출 코드의 가독성과 사용편의성을 높일 수 있는 장점이 있다.
'개발언어 > Java _ Spring' 카테고리의 다른 글
[Java]날짜 데이터를 원하는 형식(패턴)으로 표현하자! SimpleDateFormat (0) | 2023.03.09 |
---|---|
[Java] Stream()의 기초 문법 및 예시코드 (0) | 2023.02.16 |
ArrayList에서 활용할 수 있는 반복문 : for문 / foreach문 / List.forEach() (0) | 2023.02.01 |
HashMap()의 간단한 개념과 주요 메서드 와 설명 (0) | 2023.01.31 |
스프링 입문 _ 섹션2. 스프링 웹 개발 기초 (0) | 2022.12.05 |