[Kotlin] 조건문, 반복분, 예외처리

2023. 2. 24. 22:19· BE/Kotlin
반응형

자바 개발자를 위한 코틀린 입문

 

 

이 포스팅에서 작성하는 내용은 자바 개발자를 위한 코틀린 입문 에서 발췌하였습니다.

https://inf.run/BpYf

 

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의

이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com


1. 조건문

  • if는 Java와 문법이 동일하다.
  • 단, Java에서의 if는 그 자체로 값이 될 수 없지만, Kotlin에서는 if 자체로 값을 반환할 수 있다.
  • in과 ..을 사용하면 범위를 나타내는데 용이하다.
  • (Java) swtich case문 = (Kotlin) when
// void 생략 가능
fun isMale(data: String) {
    if(data == "male"){
        throw IllegalAccessException("${data}로 조건에 부합하지 않습니다.")
    }
    else{
        println("${data}로 조건에 부합하지 않습니다.")
    }
}

// Kotlin에서의 if는 Expression으로 값을 바로 대입할 수 있다. (그러므로, 삼항연산자가 코틀린에는 없음)
fun isPostiveOrNagtive(num: Int): String{

    return if(num > 0) "양수입니다"
        else if(num == 0) "0 입니다"
        else "음수입니다"
}

// in .. 을 사용하면 보다 간편하게 범위를 지정할 수 있다.
fun isZeroToTen(num: Int): Boolean{
    // (java) (0 <= num && num <= 10)
    return num in 0..10
}

// (java) switch case 문 = (kotlin) when
// when에 변수를 할당하지 않아도 사용 가능하다.
fun numToEng(num: Int): String{
    return  when(num){
        0 -> "zero"
        1 -> "one"
        2 -> "two"
        in 3..10 -> "three ~ ten"
        else -> "I can't"
    }
}

 

 

 

2. 반복문

  • (Java) for-each문 = (Kotlin) in
  • step : 증감 수치
  • downTo : 반대로 수를 낮추면서 반복
  • Java에서의 while & do-while 문법은 Kotlin에서도 같다.
fun main() {
    var numArr = listOf(1,2,3,4,5)

    println("[1]")
    // (java) [foreach] int num : numArr
    for(num in numArr){
        println(num)
    }

    println()
    println("[2]")
    // (java) for(int i=0; i<5; i++)
    for(i in 0..4){
        println(numArr[i])
    }

    println()
    println("[3]")
    // downTo를 하면 반대로 수를 낮추면서 반복할 수 있다.
    // (java) for(int i=4; i>=0; i--)
    for(i in 4 downTo 0){
        println(numArr[i])
    }

    println()
    println("[4]")
    // step을 이용하면 몇개씩 증가시킬 지 설정할 수 있다.
    // (java) for(int i=0; i<5; i+=2)
    for(i in 0..4 step 2){
        println(numArr[i])
    }

    // while & do-while은 Java와 같다.
}

 

 

 

3. 예외 처리

  • Kotlin에서의 모든 예외는 Unchecked Exception 이다. (throws 던질 필요 X)
  • try-catch (finally) 문법은 Java와 동일하다.
  • Java의 try-with-resources 대신 Kotlin에서는 use 라는 것을 사용한다.
fun main() {
    // 입력을 하는데도 불구하고, throws로 IOException을 하지 않는다.
    // Kotlin 에서는 모두 Unchecked Exception 이다. (즉, throws 할 필요X)
    var reader = BufferedReader(InputStreamReader(System.`in`))
    println(reader.readLine())
}

// try-catch (finally) 문법은 Java와 동일
fun parseIntOrThrow(str: String): Int {
    try{
        return str.toInt()
    } catch(e: NumberFormatException){
        throw IllegalArgumentException("${str}은 숫자가 아닙니다.")
    }
}

// try with resources 대신 use라는 것을 사용한다. (추후에 공부 예정)

 

 

4. 함수 사용 방법

  • 함수가 하나의 값을 도출한다면, { } 블록 대신 = 을 사용할 수 있다. (= 을 사용하는 경우, 반환 타입 생략 가능)
  • 함수에 default 값을 설정할 수 있다.
  • 가변인자 사용 : vararg를 사용하며, 배열로 파라미터를 넣어줄 땐 *을 써야 한다.
fun main() {
    println(findMin(5,8))

    // 직접 어떤 인자에 무슨 값을 넣을 지도 설정 가능하다. (Java 함수를 가져다 사용하는 경우에는 불가능)
    strPrint("Kotlin", newLine=false)

    println()
    // 가변인자 사용 1번
    println(sumAll(1,2,3,4,5))

    var numArr = arrayOf(1,2,3,4,5)
    println(sumAll(* numArr.toIntArray()))       // 배열로 넘기는 경우에는 *을 붙여줘야 한다.

}

// 함수가 하나의 값을 도출해낸다면, { } 블록대신 = 사용이 가능하다. (= 을 사용하는 경우 리턴타입을 생략 가능)
fun findMin(num1: Int, num2: Int) =
    if(num1 < num2)
        num1
    else
        num2

// 함수에 default 값을 Setting 할 수 있다.
fun strPrint(
    str: String = "Default String",
    num: Int = 5,
    newLine: Boolean = true
) {
    for(i in 1..num){
        if(newLine)
            println(str)
        else
            print(str)
    }
}

fun sumAll(vararg nums: Int): Int {
    var result = 0
    for (num in nums) {
        result += num
    }

    return result
}

 

 

반응형

'BE > Kotlin' 카테고리의 다른 글

[Kotlin] Lambda Expression  (0) 2023.03.10
[Kotlin] Collection, 확장/중위함수  (0) 2023.03.08
[Kotlin] object 키워드, 클래스 관련  (0) 2023.03.07
[Kotlin] 클래스, 상속, 접근제어자  (0) 2023.03.04
[Kotlin] 변수, 타입 사용 방법  (0) 2023.02.22
'BE/Kotlin' 카테고리의 다른 글
  • [Kotlin] Collection, 확장/중위함수
  • [Kotlin] object 키워드, 클래스 관련
  • [Kotlin] 클래스, 상속, 접근제어자
  • [Kotlin] 변수, 타입 사용 방법
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • 자기 공부
  • 이펙티브 자바
  • Effective Java
  • 프로젝트로 배우는 Vue.js 3
  • 더 자바 Java 8
  • junit5
  • 코테 공부
  • 이펙티브자바
  • 자기공부
  • Oracle
  • 알고리즘 공부
  • 전산회계 2급 준비
  • 코틀린
  • 코테공부
  • 자바 테스팅 프레임워크
  • Java to Kotlin
  • java 8
  • JPA 공부
  • 자바 개발자를 위한 코틀린 입문
  • MongoDB 기초부터 실무까지
  • MongoDB with Node.js
  • 알고리즘공부
  • MongoDB 공부
  • JPA
  • vue3 공부
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • 자바공부
  • 자기개발
  • 자기 개발
  • 자바 공부

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[Kotlin] 조건문, 반복분, 예외처리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.