Kotlin 코드 간단히 살펴보기

프로그램 시작점

이미 앞에서도 소개한 Hello World 프로그램부터 살표 보도록 하겠다. 코틀린의 기본 문법은 자바와 똑같이 main() 함수에서 시작한다. main 함수는 클래스에 속하지 않고 패키지 바로 아래에 있어야 한다. 패키지명은 Java와 같이 도메인명을 뒤집어 콤마(.) 단락의 스타일이다.

코틀린의 소스 코드의 확장자는 .kt, .kts을 사용한다. .kt 파일은 Kotlin 컴파일러에서 컴파일되는 것이고, .Kts 파일은 Kotlin 스크립팅 지원에 의해 실행된다.

Hello World!

Hello, world!를 출력하는 프로그램은 다음과 같다. HelloWorld.kt 파일 확장자는 .kt을 붙인다.

package com.devkuma.sample

fun main() {
    println("Hello, world!")
}

Oupput:

Hello, world!!!

실제 실행을 하려면 Kotlin 컴파일러나 IntelliJ IDEA(+ Kotlin 플러그인)을 사용한다. 간단히 실행하고 싶을 때는 Kotlin Playgourd에서 웹브라우저로 Kotlin 코드를 편집하고 실행해봐도 된다.

main 명령 인수

위에서는 main 함수에 인자를 생략하였지만, 인자로는 args: Array<String>와 같이 넣을 수 있다.

argsArray<String>를 보고 알 수 있듯이 문자열 배열 이어서 여러 개의 값을 파라미터로 문자열을 가져올 수 있고, args[0]으로 첫번째 파라미터를 가져올 수 있다.
파라미터가 없을 경우에는 args[0]에 접근하면 ArrayIndexOutOfBoundsException 예외가 발생하는데, contentToString() 메소드를 사용하면 이를 방지 할수 있다. 이 메소드는 파라미터가 없을 시에 빈 배열([])이 표시된다.

fun main(args: Array<String>) {
    //println("program arguments: ${args[0]}");
    println("Program arguments: ${args.contentToString()}")
}

Oupput:

Hello World!
Program arguments: []

주석

주석은 한줄 주석과 여러줄 주석이 있다.

fun main(args:Array<String>){
    // 한줄 주석
    /*
      여러줄 주석
    */
}

라인 마지막에 세미콜론

라인 마지막에 세미콜론(;)은 생략 가능하다. 붙여도 상관 없지만 생략하는 경우가 많다.

println( "Hello!")
println( "Hello!");

코딩 규칙

다음과 같은 코딩 규칙이 있다.

  • 변수 및 함수 이름에는 camel case를 사용한다(예: createObject).
  • 데이터 타입, 클래스 이름은 대문자로 시작한다(예 : String).
  • 함수 이름이나 프로퍼티 이름은 소문자로 시작한다(예 : marginWidth).
  • 들여쓰기는 4개의 스페이스를 사용한다.
  • public 함수는 Kotlin Doc 문서(KDoc)를 참고한다.

문자열 선언

// 문자열 선언
val hoge = "aiueo"

// 타입 선언도 가능
val hoge : String = "aiueo"

// 숫자 선언
val number = 1

데이터 타입을 선언은 명시적으로 하기도 하지만, 선언이 없어도 추론되는 경우에는 생략이 가능하다.

문자열 템플릿

StringTemplate.kt

class Test {
    fun printStr():String{
        return "test"
    }
}

fun main(args:Array<String>) {
    val num1 = 34
    println("num is $num1")
    val test = Test()
    println("test function ${test.printStr()}")
}

println() 함수에서 문자열 안에서 $ 표시만 명시하면 변수를 바로 사용할 수 있다.

표준 출력 print, println

PrintTutorial.kt

fun main(args: Array<String>) {
    print("한줄 출력")
    print("입니다. \n")

    println("자동으로 줄바꿈 해줍니다.")

    print("그래서 저는 여기에 표시됩니다.")
}

Output:

한줄 출력입니다. 
자동으로 줄바꿈 해줍니다.
그래서 저는 여기에 표시됩니다.

print() 메소드는 한줄에 연속해서 출력되고, println()은 자동으로 줄바꿈을 해준다.
print() 메소드에 마지막 문자열에 계행문자(\n)을 넣어주면 println()를 호출한거 처럼 줄바꿈이 된다.

키워드

// Hard keywords 
as (cast)     as (import) as?           break 
class         continue     do           else 
false         for          fun          if 
in            !in          interface    is 
!is           null         object       package 
return        super        this         throw 
true          try          typealias    typeof
val           var          when         while 

// Soft keywords 
by            catch        constructor  delegate
dynamic       field        file         finally 
get           import       init         param 
property      receiver     set          setparam
where 

// Modifier keywords 
actual        abstract     annotation   companion 
const         crossinline  data         enum 
expect        external     final        infix 
inline        inner        internal     lateinit 
noinline      open         operator     out
override      private      protected    public 
reified       sealed       suspend      tailrec
vararg 

// Special identifiers 
field         it