[Kotlin] 01. 함수, 문자열, When, If, 상수, 변수

1. 함수 생성

fun helloKotlin(): Unit { // Unit 반환 타입은 생략가능
    println("Hello Kotlin-Basic!")
}

fun add(a: Int, b: Int): Int {
    return a + b
}

helloKotlin() // Hello Kotlin-Basic!
println(add(4, 5)) // 9
  • 코틀린은 fun키워드를 사용해 함수를 생성한다.
  • fun 함수명(인자: 타입) : 반환타입 { } 의 구조를 가지고 있다
  • 세미콜론(;)은 붙일 필요가 없다.

2. 문자열 템플릿과 주석

fun printInfo(){
    var name : String = "meda"
    val lastName = "ndro"
    println("닉네임:${name}")
    println("풀네임:${name + lastName}")
    println("뒤에 공백으로 구분되면 $name 처럼 중괄호 생략 가능")
    println("\$ 표시는 \\(백슬래시) 이스케이프 문자 사용")
    println("주석은 //으로 가능합니다.")//이렇게
    println("여러줄 주석은 /* */으로 가능합니다")
    /* 이
       렇
       게 */
}
  • 문자열 내에서 값을 불러올때는 ${ }를 사용한다.
  • 주석은 한줄 //와 여러 줄 /* */을 사용한다.

3. 조건식, 상수, 변수

3-1. If와 상수 그리고 변수

fun maxBy1(a: Int, b: Int): Int {
    if (a > b) {
        return a
    }else{
        return b
    }
}

fun maxBy2(a: Int, b: Int) = if (a > b) a else b
// maxBy1과 같은 동작을 한다,
// 자바 삼항연산자 (a > b) ? a : b 와 비슷하다

fun maxByTest(){
    val a : Int = 10 // val 은 Value 상수
    var b : Int = 9 // var 는 Variable 변수
    var c = 7 // 타입 자동 추론 가능

    //a = 20   //상수는 수정 불가능
    b = 20   //변수는 수정 가능

    println("일반적인 방법 ${maxBy1(a,b)}") // 일반적인 방법 20
    println("간결한 방법 ${maxBy2(a,b)}") // 간결한 방법 20
}
  • 일반적인 if 조건문은 JAVA와 사용법이 같다.
  • (조건) ? a : b의 삼항 연산자는 if (조건) a else b로 대체한다.
  • val (value, 값)은 상수 값을 의미하며 수정이 불가능하다.
  • var (variable, 변수)는 변수를 의미하며 수정이 가능하다.
  • a에는 10, b에는 20이 저장되어 값을 maxBy 함수에서 20이 반환되어 20이 출력된다.

3-2. When과 조건의 범위

fun checkNum(score : Int): Unit{ // 모든 함수는 expression 이다 (Unit 반환)
    when(score){
        0 -> println("$score is 0")
        1 -> println("$score is 1")
        2,3 -> println("$score is 2 or 3")
    }// switch case 문과 비슷한 when 구문, 명령문(statement)

    var intToString = when(score){
        0 -> "0"
        1 -> "1"
        2,3 -> "2 or 3"
        else -> "not 0 to 3"
    }// 변수에 대입할때는 else문이 필수이다, 표현식(expression)

    println("$score 문자열 변환 결과 : ${intToString}")

    when(score){
        in 9..10 -> print("천재") // 9이상 10 이하
        in 4 until 9 -> print("괜춘") // 4이상 9미만
        else -> println("노력하세요")
    }
}
  • checkNum(2) 입력 시 출력 결과
2 is 2 or 3   // 첫번째 when에서 2,3에 해당하는 값 출력
2 문자열 변환 결과 : 2 or 3   // 두번째 when에서 intToString에 2 or 3 대입하여 출력
노력하세요   // 세번째 when에서 else에 해당하는 값 출력
  • 표현식(expression) : 값을 만들어 반환
  • 명령문(statement) : 값을 만들지 않음
  • when( )구문은 switch case와 비슷하며 명령문과 표현식으로서 사용이 가능하며 표현식으로 사용될 때는 else문을 사용해 예외처리를 해야 한다.
  • When 조건의 범위
    • A .. BA ≤ .. ≤ B , 즉, A이상 B 이하를 의미한다
    • A until BA ≤ .. < B 즉, A이상 B미만을 의미한다.
    • B downTo AB ≥ .. ≥ A 즉, B이하 A이상을 의미한다.
    • 기본적으로 1씩 증가 or 감소하며 step N을 붙이면 N만큼 증가 감소한다
      in 0 *until* 90, 1, 2, 3, 4, 5, 6, 7, 8을 포함하고
      in 0 *until* 9 *step* 30, 3, 6을 포함한다.