大家好,我是青空。 最近一段时间在梳理kotlin的一些基本概念知识点,整理了一系列的思维导图。今天我们来看看kotlin出语法的思维导图吧。
首先我们有个共识,kotlin 文件以 .kt 为后缀,就像Java所有的文件都是以.java 为后缀。
kotlin的 package 声明与Java是一直的,都是在开头使用了 package 关键词。
package com.example
import java.util.*
fun test() {}
class Run {}
默认引入的 package
kotlin 的程序的主入口和Java是类似的也是main函数,但是有一个区别就是kotlin的main函数不在主类里面,它是单独放在外面的。main函数还有无参数和有参数两种表现形式。
// 无参数表现形式
fun main() {
println("Hello world!")
}
// 有参数表现形式
fun main(args: Array<String>) {
println(args.contentToString())
}
标准输入输出和Java比较类似,但是kotlin进行封装简化了。
// hello world! 不会换行
fun main() {
print("Hello ")
print("world!")
}
// hello
// world!
// 换行了
fun main() {
println("Hello ")
println("world!")
}
函数的定时使用了关键字 fun 相比Java 做了相应的简化。
参数格式为:参数 : 类型
表达式作为函数体时
fun sum(a: Int, b: Int) = a + b
fun main() {
println("sum of 19 and 23 is ${sum(19, 23)}")
}
public fun sum(a: Int, b: Int): Int = a + b // public 方法则必须明确写出返回类型
fun printSum(a: Int, b: Int): Unit {
print(a + b)
}
fun printSum(a: Int, b: Int) {
print(a + b)
}
变长参数可以用 vararg 关键字进行标识
fun vars(vararg v:Int){
for(vt in v){
print(vt)
}
}
fun main() {
vars(1,2,4,3)
}
fun main() {
val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
println(sumLambda(2,1220))
}
val a: Int = 1
val b = 1 // 系统自动推断变量类型为Int
val c: Int // 如果不在声明时初始化则必须提供变量类型
c = 1 // 明确赋值
与Java 大部分相同
$ 表示一个变量名或者变量值
$varName 表示变量值
${varName.fun()} 表示变量的方法返回值:
在字符串中,可以$开头的方式,组合变量值
var a = 1
// 模板中的简单名称:
val s1 = "a is $a"
a = 2
范例
// 模板中的任意表达式:
val s2 = "${s1.replace("is", "was")}, but now is $a"
等同于
// 模板中的任意表达式:
val s2 = s1.replace("is", "was") + “, but now is ” + a"
${}嵌套后,代表这是引用部分
范例
//类型后面加?表示可为空
var age: String? = "23"
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1
加强null的意识
具有操作符形式 … 的 rangeTo,可以理解为upTo,还有一个downTo
for (i in 1..4) print(i) // 输出“1234”
for (i in 4..1) print(i) // 什么都不输出
for (i in 4 downTo 1) print(i) // 输出“4321”
// 使用 step 指定步长
for (i in 1..4 step 2) print(i) // 输出“13”
for (i in 4 downTo 1 step 2) print(i) // 输出“42”
// 使用 until 函数排除结束元素
for (i in 1 until 10) { // i in [1, 10) 排除了 10
println(i)
}//输出123456789
kotlin代码每行结尾没有分号
文章主要梳理了一下kotlin中基本的语法,后续其他的还在整理中,会陆续发出。
如果你想要思维导图的话,可以在文章或者公众号里留言。完整的思维导图等到全部整理完了,再提供下载。