前言
本文章的内容以Kotlin官方文档为主,细节方面会在学习过程中进行进一步完善~
0、概述
Kotlin是一个基于JVM的编程语言。与Java不同的是,Kotlin是一个函数式编程语言,内置了多种语法糖,相对于Java来说代码的臃肿度有所降低。
本文章侧重于介绍Kotlin与Java之间不同之处,方便Java开发者快速上手。
1、基础
-
语句:Kotlin的每个语句最后不需要分号,如果需要在一行内写入多个语句,才需要使用分号隔开。
-
一切都是对象:Kotlin的所有变量均是类对象,没有基本的数据类型(如int, byte, char等)。在这个意义上讲,可以在任何变量上调用成员函数与属性。Kotlin的一切类的父类是
Any -
声明位置:与Java不同的是,Kotlin的变量和函数不是必须声明在类的内部,可以声明在文件的顶层,Kotlin的类文件以
.kt结尾。**package lesson00_basic fun main() { print("HELLO, ") println("Kotlin") println("i = $i, i2 = $i2") } var i = 0xFFFF val i2 = 5 -
变量声明方式:Kotlin的变量有两种声明方式:
val定义只读局部变量,只能被赋值一次(声明时可以不赋值)var定义可变变量。
-
声明语法:Kotlin变量的声明语法与C type语言不同:
val a: Int = 1 // 完整声明并初始化 val b = 2 // 省略类型的声明,编译器自动推断类型 val c: Int // 没有初始值的声明必须指定类型 c = 2 -
空值与空检测:当可能用
null值时,必须将引用显式标记为可空。可空类型名称以问号(?)结尾。fun parseInt(str: String): Int? { // 该方法可能返回null }在使用可能为空的类型时,需要先进行空检测。空检测通过后,变量会自动转换为非空值
fun parseInt(str: String): Int? { return str.toIntOrNull() } //sampleStart fun printProduct(arg1: String, arg2: String) { val x = parseInt(arg1) val y = parseInt(arg2) // 直接使用 `x * y` 会导致编译错误,因为它们可能为 null if (x != null && y != null) { // 在空检测后,x 与 y 会自动转换为非空值(non-nullable) println(x * y) } else { println("'$arg1' or '$arg2' is not a number") } } -
类型检测与类型转换:逻辑同上,对变量进行类型检测之后,会自动将其进行类型转换。
-
操作符重载:Kotlin允许操作符重载,如对Array对象、String对象通过
[]访问就是通过重载实现。