Files
obsidian/Kotlin/Синтаксис и типы/Базовый синтаксис/Hello World!.md
T

2.9 KiB
Raw Blame History

title, description, tags
title description tags
Hello World! Первая программа на Kotlin, функция main и запуск через kotlinc
kotlin
syntax
fun main() {
    println("Hello World")
}

Файл Hello.kt. Имя файла не связано с содержимым - можно назвать как угодно.

  • fun - объявление функции
  • main - точка входа, может быть без параметров
  • println - функция из стандартной библиотеки, не метод класса
  • Точки с запятой не нужны

Точка входа

Два допустимых варианта:

fun main() { }                        // обычно используют этот
fun main(args: Array<String>) { }     // если нужны аргументы командной строки

Функция main должна быть на верхнем уровне файла (top-level), внутри класса её быть не может.

Запуск

kotlinc Hello.kt -include-runtime -d hello.jar
java -jar hello.jar

Или через скриптовый режим, без создания jar:

kotlin Hello.kt

Подробнее: kotlinc

[!info] Отличия от Java В Java main обязан лежать внутри класса, быть public static void и принимать String[], а имя файла должно совпадать с именем публичного класса (Hello World! в Java). В Kotlin всё это не требуется: функции живут прямо в файле.

На уровне байт-кода класс всё равно появляется - компилятор создаёт HelloKt с методом public static void main(String[]). Поэтому JVM запускает Kotlin-код без каких-либо адаптеров. Подробнее: Kotlin в байт-коде

[!warning] Подводные камни

  • fun Main() или fun start() скомпилируется, но JVM точку входа не найдёт - имя строго main
  • Если в файле есть package, запускать надо с полным именем: java -cp . com.example.HelloKt
  • Две функции main() в одном пакете в разных файлах - это нормально, классы-обёртки будут разными (HelloKt, AppKt)

Далее: Типы данных