kotlin入门Hello World

29 阅读3分钟

QWEN

qwen的提示词

你好我是刚刚学习kotlin的新手,我需要你扮演一个kotlin开发的专家来指导我学习。我希望你能解释kotlin代码,并给出一下扩展的知识点,能够快速让我胜任kotlin在android的开发,不过目前我还不涉及android的开发,只想熟悉kotlin的语法。我目前的情况是,有java,react , ts的开发经验。

HelloWorld

作为入门的第一个程序,写一个Hello World是一个约定俗成的一种习惯。

// File: HelloWorld.kt 
fun main(){
    println("Hello World")
}

稍微看一下这段代码,接触过Java的朋友,会发现很奇怪,为什么没有一个Class来包裹这段代码,如果接触过js的朋友,理解起来就非常容易,这就相当于是一个module(模块)。

回到Kotlin本身,在上面写main方法在Kotlin中叫做顶级函数,Kotlin是面向程序员开发的语言,它和Java语言最终会构建为class文件,然后在JVM中执行。

顶级函数

让我们看看它实际的样子, 构建之后的class文件是文件名+Kt命名的class文件,通过javap -HelloWorldKt.class 反编译看一下代码结构

// File:HelloWorldKt.class
public final class io.gitee.pkmer.basic.HelloWorldKt {
  public static final void main();
  public static void main(java.lang.String[]);
}

这里有两个main方法,为了更清楚地理解这两个 main 方法的关系,我们可以看看它们在字节码中的实现逻辑

public final class HelloWorldKt {
    // 你定义的无参数 main 方法
    public static final void main() {
        System.out.println("Hello World");
    }

    // 自动生成的兼容性 main 方法
    public static void main(String[] args) {
        main(); // 调用无参数的 main 方法
    }
}

kotlin语言设计的哲学

  1. JVM 的限制 :JVM 并不支持真正的“顶级函数”。所有的方法都必须属于某个类。因此,Kotlin 编译器需要生成一个类来容纳这些顶级函数。
  2. 开发者的体验 :Kotlin 希望让开发者能够直接定义顶级函数,而不需要显式地创建类。这种设计减少了样板代码,使代码更加简洁。

通过这种方式,Kotlin 在底层实现了与 JVM 的兼容性,同时在上层提供了更简洁的语法。在Kotlin语言中,Kotlin为了减少Java笨重的编写方式,出现了许多语法糖,可以理解为让Java的开发更加现代化,随着学习,在之后文章中你会越来越体会到这种语法糖的对Java开发的简洁性。

小结

  1. Kotlin 不强制要求每个文件都包含一个类,允许你直接定义顶级函数顶级变量
  2. main 函数是程序的入口点,可以直接定义在文件中,而不需要类包装。
  3. Kotlin 编译器会将顶级函数编译成静态方法,并将其放在一个自动生成的类中。

好了我们的Kotlin第一个程序,算是入门了,接下来遇到什么情况,学习到什么知识点,我也不知道,不知道。但是我坚信的是打铁每样,边打边像关关难过,关关过的信念,好的,我们下章见。

// 顶级变量
val msg = "Hello World,你好"

// 顶级函数
fun main(){
    println("Welcome to Kotlin: ${msg}")
}
/**output:
 * Welcome to Kotlin: Hello World,你好
 */