코틀린 시작하기 & Basic Syntax

spring

코틀린의 기본 문법

코틀린 기본문법에서 확인이 가능하다.

시작하기

JDK를 설치 후에 인텔리 j를 이용하여 새로운프로젝트 - JAVA - kotlin 해서 시작할 수 있음.

예제 코드

fun main(args: Array<String>) {
    println("HelloWorld!")
    println("HelloWorld!")
    println("HelloWorld!")
    println("HelloWorld!")
    println("HelloWorld!")
}

함수정의

- 함수는 fun 키워드로 정의

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

- 함수 몸체가 식(Expression)인 경우 return 생략 가능
- 이런경우 return type이 추론됨

fun sum(a: Int, b:Int) = a + b

리턴값 없는 함수

- 리턴 할 값이 없을 경우 Unit(Object) 으로 리턴 함
- Unit은 Java에서 void 리턴 역할

fun printKotlin() : Unit {
    println("Hello kotlin")
}

- Unit은 생략 가능

fun printKotlin() {
    println("hello kotlin")
}

지역 변수 정의

- val : 읽기 전용 변수
- 값의 할당이 1회만 가능, Java의 final과 유사

val a: Int = 1 // 즉시 할당
val b = 2 // Int type 추론
val c: Int // 컴파일 오류, 초기화가 필요함
c= 3 //읽기 전용

- var: Mutable 변수

var x = 5
x += 1


- 주석은 비슷하다.
- 블럭 주석이 중첩이 가능하다

문자열 템플릿

-String Interpolation(문자열 보간법)

var a = 1

val s1 = "a is $a"

a = 2

val s2 = "${s1.replace("is","was")}, but now is $a"

조건문

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

- 조건식으로 사용 가능
fun maxOf(a:Int, b:Int) = if (a > b) a else b

nullable

- 값이 null이 될 수 있는 경우 타입에 nullable 마크를 명시해야함.

fun parseInt(str:String): Int? {
    // 정수가 아닌 경우 null을 리턴
}

- nullable 타입의 변수를 접근 할 때는 반드시 null 체크를 해야함.
- 그렇지 않으면 컴파일 오류가 발생됨

fun printProduct(arg1: String, arg2: String) {
    val x : Int? = parseInt(arg1)
    val y : Int? = parseInt(arg2)

    if(x != null && y != null) {
        println(x*y)
    } else {
        println("either '$arg1' or '$arg2' is not a number")
    }
}

자동 타입 변환

- 타입 체크만 해도 자동으로 타입 변환이 됨

fun getStringLength(obj: Any):Int? {
    if(obj is String) {
    //obj가 String으로 바로 형변환이 됨
        return obj.length
    }

    return null
}

#When expression

fun describe(obj: Any): String =
    when(obj) {
        1 -> "One"
        "Hello" -> "Greetin"
        is Long -> "Long"
        !is String -> "Not a String"
        else -> "unknown"
    }

    // switch case 문과 비슷하지만 조건식에 아무거나 와도 상관없음. 강력한기능

ranges

- In 연산자를 이용해서 숫자 범위를 체크 가능

val x = 3
if(x in 1..10) {
    println("fits in range")
}

-range를 이용한 for loop

for(x in 1..5) {
    print(x)
}

collections

- 컬렉션도 in으로 loop 가능

val items = listOf("apple", "banana", "kiwi")
for(item in items) {
    println(item)
}

- in으로 해당 값이 collection에 포함되는지 체크 가능

val items = setOf("apple","banana","kiwi")
when {
    "orange" in items -> println("juicy")
    "apple" in items -> println("apple is fine too")
}

-람다식을 이용해서 컬렉션에 filter, map 등의 연산 가능

val fruits = listOf("banana","avocado","apple","kiwi")

fruits
            .filter { it.startsWith("a") }
            .sortedBy { it }
            .map { it.toUpperCase() }
            .forEach{println(it)}
효준's profile image

효준

2018-09-01 11:30

다른글 보러가기

모두의 네트워크(길벗) 후기

이전 포스트

Kotlin - Basic Types

다음 포스트