[2023. 12. 21]

Gahyeon Lee·2023년 12월 21일
0

TIL

목록 보기
31/47
post-thumbnail

▶️ leadLine() vs leadln()

코틀린에서는 readLine(), readln()으로 입력받을 수 있다.
코틀린의 물음표(?) 는 null을 허용해준다.

  • readLine()은 null을 허용해서 입력받아 반환형이 String?이고, readln()은 null을 허용하지 않고 입력받으므로 반환형이 String이다.
  • readln()은 null을 반환하지 않으므로 바로 toInt()를 사용할 수 있다. 그러나, readLine()은 null이 반환될 수도 있기 때문에 toInt()를 해주기 위해서는 null이 아니라는 느낌표(!!) 선언을 해준 후에 toInt()를 사용할 수 있다.
  • safe call을 이용하여 readLine()이 null이 아닐 경우 toInt()를 반환해주고, null일 경우 에러를 띄워주게 할 수도 있다.

▶️ toInt() vs toIntOrNull()

  • toInt()는 문자열을 정수형으로 변환시킨다. "abc"와 같은 정수형으로 변환이 불가능한 문자열을 toInt()하면 Exception~~ 에러가 발생한다.
  • toIntOrNull()는 toInt()와 동일한 기능을 하지만 정수형으로 변환 불가능한 문자열은 에러가 발생하지 않고 null을 반환해준다.

▶️ print() vs return()

  • print()는 단순히 출력값만을 보여주고, 함수값을 지정하는 것은 불가능하다.
  • return()은 그 자체로 값 출력은 불가능하고, 함수에 대한 호출이 있을 때 지정된 함수의 값을 반환한다.
    💡 print()는 단순한 출력 용도(함수에 값 지정 불가)이고 return()은 지정된 함수에 값을 지정해주니, return()으로 값을 지정한 함수의 결과물을 출력하고 싶다면 print(함수())를 하면 된다.

▶️ uppercase(), lowercase()

  • 무언가를 판별하는 함수 앞에는 is가 붙는다.
    isUpperCase 함수 : 대문자라면 true, 아니라면 false 반환
    isLowerCase 함수 : 소문자라면 true, 아니라면 false 반환
  • 무언가를 변환하는 함수 앞에는 to가 붙는다.
    하지만 toUpperCase와 toLowerCase를 써봤는데 취소선 같은 게 떠서 알아보았다. 취소선이 뜨는 이유는 코틀린 1.5부터 deprecated 시킨 것이라고 한다.
    deprecated는 더이상 지원하지 않겠다는 의미로 써도 되긴하나 앞으로 업그레이드되면서 어떻게 바뀔지 모르니까 오작동이 일어나도 책임지지 않겠다는 의미라고 한다. 주의해서 쓰거나 구글에서 mode word readable deprecate replacement 등으로 검색하면 대신 써야하는 명령어가 나온다.
    따라서 코틀린 1.5부터는 locale에 구애받지 않고 대소문자를 변경할 수 있는 API를 제공한다고 한다.
    toUpperCase 대신 uppercase로, toLowerCase 대신 lowercase로,
    caplitalize 대신 replaceFirstChar
    바꿔서 사용하면 된다.
  • 만약 변환할 필요가 없거나 변환할 수 없다면(숫자나 기호) 이러한 부분들은 무시된다.
fun main(args: Array<String>) {
    var str = "AgfDvFdsSD1234"
    println("문자열 = $str")
    println("문자열 대문자 변환 = ${str.uppercase()}")
    println("문자열 소문자 변환 = ${str.lowercase()}")


    val sl = str.toMutableList()              // 문자열을 변환 가능한 MutableList로 변환
    for(i in sl.indices) {
        if(sl[i].isUpperCase()) {
            println("${sl[i]}는 대문자 입니다.")  // 각 문자에 대하여 대문자를 검사.
            sl[i].lowercase()
        }
        else if(sl[i].isLowerCase()) {
            println("${sl[i]}는 소문자 입니다.")  // 각 문자에 대하여 소문자를 검사.
            sl[i].uppercase()
        }
    }
    println("문자열 대문자 소문자 변경 = ${sl.joinToString("")}")
}

/*결과
문자열 = AgfDvFdsSD1234
문자열 대문자 변환 = AGFDVFDSSD1234
문자열 소문자 변환 = agfdvfdssd1234
A는 대문자 입니다.
g는 소문자 입니다.
f는 소문자 입니다.
D는 대문자 입니다.
v는 소문자 입니다.
F는 대문자 입니다.
d는 소문자 입니다.
s는 소문자 입니다.
S는 대문자 입니다.
D는 대문자 입니다.
문자열 대문자 소문자 변경 = AgfDvFdsSD1234
*/
profile
코린이 강아지 집사🐶

0개의 댓글