思维导图|kotlin入门基础语法

大家好,我是青空。 最近一段时间在梳理kotlin的一些基本概念知识点,整理了一系列的思维导图。今天我们来看看kotlin出语法的思维导图吧。

思维导图|kotlin入门基础语法_第1张图片

首先我们有个共识,kotlin 文件以 .kt 为后缀,就像Java所有的文件都是以.java 为后缀。

包声明

kotlin的 package 声明与Java是一直的,都是在开头使用了 package 关键词。

package com.example
import java.util.*
fun test() {}
class Run {}

默认引入的 package

  • default
    • kotlin.*
    • kotlin.annotation.*
    • kotlin.collections.*
    • kotlin.comparisons.*
    • kotlin.io.*
    • kotlin.ranges.*
    • kotlin.sequences.*
    • kotlin.text.*
  • JVM
    • java.lang.*
    • kotlin.jvm.*
  • JS
    • kotlin.js.*

程序主入口

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 方法则必须明确写出返回类型

public fun sum(a: Int, b: Int): Int = a + b   // public 方法则必须明确写出返回类型

无返回值用Unit表示,类似java的void

fun printSum(a: Int, b: Int): Unit {
  print(a + b)
}

返回 Unit类型,则可以省略

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)
}

lambda(匿名函数)

fun main() {
    val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
    println(sumLambda(2,1220))
}

定义常量与变量

可变变量

  • var 关键字
  • var <标识符> : <类型> = <初始化值>

不可变变量

  • val 关键字
  • (类似Java中final修饰的变量)
  • val <标识符> : <类型> = <初始化值>

支持自动类型判断

  • 声明时可以不指定类型,由编译器判断
val a: Int = 1
val b = 1       // 系统自动推断变量类型为Int
val c: Int      // 如果不在声明时初始化则必须提供变量类型
c = 1           // 明确赋值

注释

与Java 大部分相同

不同点如下

  • /* 这是一个多行的
    块注释。 */
  • kotlin中的支持嵌套 块注释
  • 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"

${}嵌套后,代表这是引用部分

NULL检查机制

两种处理方式

  • 加!!像Java一样抛出空异常
  • 加?可不做处理返回值为 null或配合?:做空判断处理

范例

//类型后面加?表示可为空
var age: String? = "23"
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1

加强null的意识

  • 当一个引用可能为 null 值时
  • 对应的类型声明必须明确地标记为可为 null

类型检测及自动类型转换

类型检测

  • 用 is 关键字
  • 类似于Java中的instanceof关键字
  • 支持 !is
  • if (obj !is String){}

区间

具有操作符形式 … 的 rangeTo,可以理解为upTo,还有一个downTo

函数辅以

  • in
  • !in
  • until
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中基本的语法,后续其他的还在整理中,会陆续发出。

如果你想要思维导图的话,可以在文章或者公众号里留言。完整的思维导图等到全部整理完了,再提供下载。

你可能感兴趣的:(Java,/,Kotlin,二三事,kotlin)