숫자 데이터와 문자열 데이터를 서로 변환해서 사용하는 경우가 많이 있다.
String to Int와 Int to String에 대해서 기록하려고 한다.
String to Int
방법 1: toInt() 사용하기
toInt() 함수를 사용해 문자열을 정수로 변환할 수 있다. toInt() 함수는 변환할 수 없는 문자열을 만났을 때 예외를 발생시키는데, 예외 처리를 고려해야 한다.
val numberString = "123"
val number: Int = numberString.toInt()
println(number) // 출력: 123
- 동작 원리: toInt() 함수는 문자열을 정수로 변환, 변환할 수 없는 경우 예외를 발생
- 예외 발생: 변환할 수 없는 문자열을 toInt()로 변환하려고 하면 NumberFormatException이 발생
val invalidNumberString = "abc"
val number: Int = invalidNumberString.toInt() // 예외 발생: NumberFormatException
방법 2: toIntOrNull() 사용하기
toIntOrNull()은 문자열이 숫자로 변환 가능한지 확인하고, 변환 할 수 없는 경우 null로 반환
안전하게 변환할 수 있으며, 예외가 발생하지 않아서 유용하다.
val validString = "456"
val invalidString = "xyz"
val validNumber: Int? = validString.toIntOrNull()
val invalidNumber: Int? = invalidString.toIntOrNull()
println(validNumber) // 출력: 456
println(invalidNumber) // 출력: null
val result = invalidString.toIntOrNull() ?: 0
println(result) // 출력: 0
- 동작 원리: toIntOrNull()은 변환 가능한 경우 정수 값을 반환하고, 변환할 수 없는 경우 null을 반환한다.
- null 안전성: 변환 결과가 null일 수 있으므로, null 검사를 하거나 엘비스 연산자(?:)를 사용하여 기본값을 설정할 수 있다.
Int to String
방법 1: toString() 사용하기
val number = 789
val numberString: String = number.toString()
println(numberString) // 출력: "789"
- 동작 원리: toString() 함수는 숫자를 문자열로 변환합니다. 모든 숫자 타입에 사용할 수 있다.
방법 2: String Interpolation 사용하기
${} 문법을 사용하여 Int 값을 String으로 변환하면서 바로 문자열로 포함할 수 있다.
val number = 101
val message = "The number is $number"
println(message) // 출력: "The number is 101"
- 동작 원리: $number를 문자열 안에 포함하면 자동으로 toString()이 호출되어 문자열로 변환한다.
방법 3: String.format() 사용하기
String.format()을 사용하면, 형식을 지정하여 숫자를 문자열로 변환할 수 있다. 이를 통해 자릿수를 맞추거나 특정 형식을 갖춘 문자열을 생성할 수 있다.
val number = 5
val formattedString = String.format("The number is %03d", number)
println(formattedString) // 출력: "The number is 005"
- 동작 원리: String.format()은 포맷을 지정해 숫자를 문자열로 변환하며, %d는 정수에 대한 포맷으로 사용된다.
'Kotlin' 카테고리의 다른 글
[Kotlin/코틀린] @Parcelize / Parcelable을 사용한 직렬화와 역직렬화 (0) | 2024.11.09 |
---|---|
[Kotlin/코틀린] MVVM 패턴이란? - MVVM 패턴과 Counter 앱 (0) | 2024.11.03 |
[Kotlin/코틀린] 인터페이스와 다중 상속이란? (0) | 2024.11.02 |
[Kotlin/코틀린] override와 super 개념 (0) | 2024.11.02 |