1.定义包名(简单和Java 基本一样)
2.定义函数
fun 开头表示函数,函数的返回值和形参(java的名称)类型 都是名字后面 :TYPE (类型都是名称后面加:) 语句结尾分号可以忽略不写
funsum(a: Int , b: Int): Int{ return a + b } funmain(args: Array<String>){ print("sum of 3 and 5 is ") println(sum(3, 5)) } funsum(a: Int, b: Int)= a + b // 该函数只有一个表达式函数体以及一个自推导型的返回值:
当函数的不需要返回值时(返回无意义的值时)可以忽略不写 (:Unit)
更多详细讲解
3.定义局部变量
声明常量(val)
funmain(args: Array<String>){ val a: Int = 1 // 立即初始化 val b = 2 // 推导出Int型 val c: Int // 当没有初始化值时必须声明类型 c = 3 // 赋值 println("a = $a, b = $b, c = $c") //使用了字符串模板 }
声明变量
funmain(args: Array<String>){ var x = 5 // 推导出Int类型 x += 1 println("x = $x") }
4.注释 (java 一样)
5.字符串模板
可以使用变量名,表达式,
fun main(args: Array<String>) { var a = 1 // 使用变量名作为模板: val s1 = "a is $a" a = 2 // 使用表达式作为模板: val s2 = "${s1.replace("is", "was")}, but now is $a" println(s2) }
6.条件表达式
if else when(取代了switch)
if else 这就不多说了, 简单
when 比 switch功能多, 可以使用 常量 和使用表达式 ,in, !in (检查值是否值在一个集合), is !is(判断值是否是某个类型) ,可以用来代替 if-else if
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { //Note the block print("x is neither 1 nor 2") } }
for 循环
for (item in collection) print(item) for (item: Int in ints){ //... } //类似java中的for(int i:array) 但是kotlin更强大 //java中的切点无法获取 index //Kotlin可以获取 "indices" for (i in array.indices) print(array[i])
while,do while break,continue 和 java 一样
7.使用可空变量以及空值检查
下面的函数是当 str 中不包含整数时返回空:
funparseInt(str : String): Int?{ //... }
使用一个返回可空值的函数:
funparseInt(str: String): Int?{ return str.toIntOrNull() } funprintProduct(arg1: String, arg2: String){ val x = parseInt(arg1) val y = parseInt(arg2) // 直接使用 x*y 会产生错误因为它们中有可能会有空值 if (x != null && y != null) { // x 和 y 将会在空值检测后自动转换为非空值 println(x * y) } else { println("either '$arg1' or '$arg2' is not a number") } } funmain(args: Array<String>){ printProduct("6", "7") printProduct("a", "7") printProduct("a", "b") }
或者这样
funparseInt(str: String): Int?{ return str.toIntOrNull() } funprintProduct(arg1: String, arg2: String){ val x = parseInt(arg1) val y = parseInt(arg2) // ... if (x == null) { println("Wrong number format in arg1: '${arg1}'") return } if (y == null) { println("Wrong number format in arg2: '${arg2}'") return } // x 和 y 将会在空值检测后自动转换为非空值 println(x * y) }
默认情况下都是空值检查 即 没有 ? 当为空时不执行该代码片段
8.for 循环
funmain(args: Array<String>){ val items = listOf("apple", "banana", "kiwi") for (item in items) { println(item) } } funmain(args: Array<String>){ val items = listOf("apple", "banana", "kiwi") for (index in items.indices) { //indices 是角标 println("item at $index is ${items[index]}") } }
9.ranges
检查 in 操作符检查数值是否在某个范围内:
funmain(args: Array<String>){ val x = 10 val y = 9 if (x in 1..y+1) { println("fits in range") } }
检查数值是否在范围外
funmain(args: Array<String>){ val list = listOf("a", "b", "c") if (-1 !in 0..list.lastIndex) { println("-1 is out of range") } if (list.size !in list.indices) { println("list size is out of valid list indices range too") } }
在范围内迭代
funmain(args: Array<String>){ for (x in 1..5) { print(x) } }
或者使用步进:
funmain(args: Array<String>){ for (x in 1..10 step 2) { print(x) } for (x in 9 downTo 0 step 3) { print(x) } }
-------------本文结束 感谢您的阅读-------------