이전 글에서 JoinTo에 대해서 알아보았다. 이번에는 contentToString 을 알아보도록 하겠다.
먼저 contentToString 사용법이다.
fun main() {
var array = arrayOf<String>("가","나","다","라","마","바",)
println(array.contentToString())
}
// 출력
//[가, 나, 다, 라, 마, 바]
contentToString 함수를 보자
//contentToString 함수
@SinceKotlin("1.4")
@JvmName("contentToStringNullable")
@kotlin.internal.InlineOnly
public actual inline fun <T> Array<out T>?.contentToString(): String {
return java.util.Arrays.toString(this)
}
함수의 내부는 사실상 자바의 Arrays.toString을 자기 자신으로 호출하고 있는것을 볼 수 있다.
java.util.Arrays.toString 함수를 보자
//java.util.Arrays.toString 함수
public static String toString(Object[] a) {
//1.배열 null체크
if (a == null)
return "null";
//2.배열의 길이 설정
int iMax = a.length - 1;
//3.배열의 길이가 0 이면 위에서 -1 로인해 -1값을 가지며 빈배열 문자열 반환
if (iMax == -1)
return "[]";
//4.StringBuilder 생성
StringBuilder b = new StringBuilder();
//빌더에 배열의 표시 '['를 추가
b.append('[');
//5.배열을 순회
for (int i = 0; ; i++) {
//6.배열의 오브젝트를 문자열로 변환하여 빌더에 추가
b.append(String.valueOf(a[i]));
//7.i 값이 iMax(배열 길이)와 같은지 비교
if (i == iMax)
//배열의 끝을 나타내는 ']' 문자 추가후 빌더를 문자열로 변환 후 반환한다.
return b.append(']').toString();
//8.오브젝트를 구분하기 위한 ", " 문자열 빌더에 추가
b.append(", ");
}
}
toString() 함수 순서
1.배열 null 체크
null 값이라면 "null" 문자열 반환
2.배열의 길이 값 설정
배열의 length - 1 하여 길이를 설정한다.
3.배열이 비어있는지 체크
iMax(배열 길이)가 -1 이면 빈 배열을 나타내는 "[]" 문자열 반환
4.StringBuilder 생성
StringBuilder 생성하고 배열의 시작을 나타내는 '[' 문자 빌더에 추가
5.배열 순회 시작
6.배열 오브젝트 문자열 변환
배열에서 index에 해당하는 오브젝트를 문자열로 변환하여 빌더에 추가
7.배열 순회 끝 체크
i의 값이 iMax와 같은지 체크 i가 iMax와 같다면 배열의 마지막 요소까지 빌더에 추가 되었음으로 배열의 마지막을 나타내는 ']'문자 빌더 에 추가하고 빌더에 입력된 데이터를 문자열로 변환하여 반환한다.
8.오브젝트 간 구분자 추가
7번의 if문을 타지 않았다면 배열 순회가 끝나지 않았음으로 오브젝트간 구별 할 수 있는 ", " 문자열을 빌더에 추가한다.
이상 코틀린의 contentToString 함수에 대해서 알아보았다.
'Kotlin' 카테고리의 다른 글
[Kotlin] JoinTo 를 알아보자 (0) | 2022.09.28 |
---|---|
[Kotlin] var / val / const 개념 정리 (0) | 2021.06.22 |