1.包声明
1、文件开头声明,默认 default 包。如:package com.strugglelin.kotlin
2、默认导入的包
kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.*
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*
2.函数定义
// -------------函数定义---------------
// 函数名称(参数:参数类型):返回类型
fun sum(a: Int, b: Int): Int {
return a + b
}
// 表达式作为函数体,返回类型可自动推断
fun sum2(a: Int, b: Int) = a + b
// 无返回值的函数,返回 Unit 类型,可省略
fun printSum(a: Int, b: Int): Unit {
print(a + b)
}
// -------------可变参数函数---------------
// 函数名称(vararg 参数:参数类型)
fun vararg(vararg args: Int) {
for (arg in args) {
print(arg)
}
}
// -------------lambda(匿名函数)---------------
fun lambda() {
var sumLambda: (Int, Int) -> Int = { x, y -> x + y }
println(sumLambda(1, 2))
}
3.常量与变量
// -------------定义常量与变量---------------
/*
* 常量 -- val <标识符> : <类型> = <初始化值>
* 变量 -- var <标识符> : <类型> = <初始化值>
*/
val a: Int = 1
val b = 2 // 系统自动推断类型
var d = 3
fun s() {
val c: Int
c = 1
d += 2
}
4.注释
// 单行注释
/* 多行注释 */
5.字符串模板
// -------------- 字符串模板 ---------
/*
* 1、"$变量/常量"
* 2、"${表达式}"
*/
var a1 = 1
// 模板中的简单名称:
val s1 = "a is $a1"
var a2 = 2
// 模板中的任意表达式:
val s2 = "${s1.replace("is", "was")}, but now is $a2"
6.NULL 检查机制
// --------------- NULL 检查机制 ---------------
// Kotlin 默认不可为空,? 表示可以为 null;!! 会抛出空异常
var age :String? = "12"
var num = age!!.toInt()
fun nullDemo(str: String?): Int? {
// return null
return str?.toInt() ?: -1 // null 返回 -1
}
7.类型检测及自动类型转换
// --------------- 类型检测及自动类型转换 ---------------
// Any 所有类的超类
fun getStringLen(obj: Any): Int? {
// is 检测类型
if (obj !is String) {
return null
} else {
return obj.length // 自动转换为 String 类型
}
}
8.区间
// ----------------- 区间 ----------------
fun test() {
for (i in 1..4) print(i) // 1<= i <= 4 输出:1234
for (i in 1..4 step 2) print(i) // step 步长 2,输出:13
for (i in 4 downTo 1 step 2) print(i) // downTo 倒叙,输出:42
for (i in 1 until 4) print(i) // 1<= i < 4 输出:123
}