KotlinKotlin 시작하기

비고

Kotlin 은 주로 JVM을 대상으로하는 JetBrains에서 개발 한 정적 유형의 객체 지향 프로그래밍 언어입니다. Kotlin은 컴파일이 쉽고, 하위 호환이 가능하며, 매우 안전하고, Java와 100 % 상호 운용이 가능하다는 목표를 가지고 개발되었습니다. Kotlin은 또한 Java 개발자가 원하는 많은 기능을 제공한다는 목표로 개발되었습니다. Kotlin의 표준 컴파일러는 JVM 용 자바 바이트 코드와 자바 스크립트 모두로 컴파일 할 수 있습니다.

Kotlin 컴파일하기

Kotlin에는 Eclipse 및 IntelliJ 용 표준 IDE 플러그인이 있습니다. Kotlin은 Ant사용하고 Gradle을 사용 하거나 명령 줄을 통해 Maven사용하여 컴파일 할 수도 있습니다.

$ kotlinc Main.kt 에서 java 클래스 파일을 출력합니다 (이 경우 MainKt.class (클래스 이름에 Kt가 추가 된 것에 유의하십시오). 그러나 $ java MainKt java를 사용하여 클래스 파일을 실행하는 경우 다음 예외가 throw됩니다.

Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
    at MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

Java를 사용하여 결과 클래스 파일을 실행하려면 현재 클래스 경로에 Kotlin 런타임 런타임 jar 파일을 포함시켜야합니다.

java -cp .:/path/to/kotlin/runtime/jar/kotlin-runtime.jar MainKt

버전

번역 출시일
1.0.0 2016-02-15
1.0.1 2016-03-16
1.0.2 2016-05-13
1.0.3 2016-06-30
1.0.4 2016-09-22
1.0.5 2016-11-08
1.0.6 2016-12-27
1.1.0 2017-03-01
1.1.1 2017-03-14
1.1.2 2017-04-25
1.1.3 2017-06-23

안녕하세요 세계

모든 Kotlin 프로그램은 main 기능에서 시작됩니다. 다음은 간단한 Kotlin "Hello World"프로그램의 예입니다.

package my.program

fun main(args: Array<String>) {
    println("Hello, world!")
}

위 코드를 Main.kt 라는 파일에 Main.kt (이 파일 이름은 완전히 임의입니다)

JVM을 대상으로 할 때 함수는 파일 이름에서 파생 된 이름을 가진 클래스에서 정적 메서드로 컴파일됩니다. 위의 예제에서 실행할 기본 클래스는 my.program.MainKt 입니다.

특정 파일에 대한 최상위 함수를 포함하는 클래스의 이름을 변경하려면 패키지 주석 위에 파일 상단에 다음 주석을 추가하십시오.

@file:JvmName("MyApp")

이 예제에서 실행할 주 클래스는 이제 my.program.MyApp 됩니다.

참조 :

Hello 선언문을 사용한 Hello World

Kotlin 프로그램의 주요 기능을 포함하는 Object Declaration 을 사용할 수도 있습니다.

package my.program

object App {
    @JvmStatic fun main(args: Array<String>) {
        println("Hello World")
    }
}

실행할 클래스 이름은 객체의 이름이며,이 경우에는 my.program.App 입니다.

최상위 함수보다이 메소드의 장점은 실행할 클래스 이름이 더 자명하며 추가하는 다른 모든 함수는 클래스 App 범위가 지정된다는 것입니다. 그런 다음 상태를 저장하고 다른 작업을 수행하는 App 의 싱글 톤 인스턴스가 있습니다.

참조 :

컴패니언 객체를 사용하는 Hello World

Object Declaration을 사용하는 것과 마찬가지로, 클래스의 Companion Object 를 사용하여 Kotlin 프로그램의 main 함수를 정의 할 수 있습니다.

package my.program

class App {
    companion object {
        @JvmStatic fun main(args: Array<String>) {
            println("Hello World")
        }
    }
}

실행할 클래스 이름은 클래스 이름이며,이 경우 my.program.App 입니다.

최상위 함수보다이 메소드의 장점은 실행할 클래스 이름이 더 자명하며 추가하는 다른 모든 함수는 클래스 App 범위가 지정된다는 것입니다. 이것은 더 많은 작업을 수행 할 클래스를 인스턴스화 할 수 있다는 것을 제외하고는 Object Declaration 예제와 비슷합니다.

실제 "hello"를 수행하도록 클래스를 인스턴스화하는 약간의 변형입니다.

class App {
    companion object {
        @JvmStatic fun main(args: Array<String>) {
            App().run()
        }
    }

    fun run() {
        println("Hello World")
    }
}

참조 :

varargs를 사용하는 주요 메소드

이러한 모든 주요 메소드 스타일은 varargs 와 함께 사용할 수도 있습니다.

package my.program

fun main(vararg args: String) {
    println("Hello, world!")
}

명령 줄에서 Kotlin 코드 컴파일 및 실행

java는 Java 코드를 컴파일하고 실행하기위한 두 개의 다른 명령을 제공합니다. Kotlin과 마찬가지로 다른 명령을 제공합니다.

자바 파일을 컴파일하는 javac . java 가 java 파일을 실행합니다.

동일로 kotlinc 코 틀린 컴파일 할 파일은 kotlin 파일을 코 틀린 실행합니다.

명령 행에서 입력 읽기

콘솔에서 전달 된 인수는 Kotlin 프로그램에서 수신 할 수 있으며 입력으로 사용할 수 있습니다. 명령 프롬프트에서 N (1 2 3 등) 개의 인수를 전달할 수 있습니다.

Kotlin의 명령 행 인자의 간단한 예.

fun main(args: Array<String>) {

    println("Enter Two number")
    var (a, b) = readLine()!!.split(' ') // !! this operator use for NPE(NullPointerException).

    println("Max number is : ${maxNum(a.toInt(), b.toInt())}")
}



fun maxNum(a: Int, b: Int): Int {

    var max = if (a > b) {
        println("The value of a is $a");
        a
    } else {
        println("The value of b is $b")
        b
    }

    return max;

}

여기에서 최대 숫자를 찾으려면 명령 행에서 두 개의 숫자를 입력하십시오. 출력 :

Enter Two number
71 89 // Enter two number from command line

The value of b is 89
Max number is: 89

For !! 운영자 Null 안전을 확인하십시오.

참고 : 위 예제는 Intellij에서 컴파일하고 실행합니다.