今天来学习下基本语法,参考了官方文档
包
package com.kotlin
导入
import关键字
import java.util*
类型的声明
Kotlin使用var 定义变量
var a:Int = 1
var b:Double = 2
使用val 定义常量
val c:Char = "你好"
函数
函数声明
Kotlin使用fun关键字作为函数声明
-
fun double(a:Int) {
-
return 2*a
-
}
函数用法
传统方式:
cal.double(2) //创建cal实例,并且调用double
函数参数
函数参数使用pascal定义法,即name:type。参数之间使用逗号隔开,参数必须是显式类型
-
fun haha(hao:Char) : Char {
-
...
-
}
默认参数
函数可以有默认值,当省略参数时,使用默认值,以下引用官方手册
-
fun read(b: Array<Byte>, off: Int = 0, len: Int = b.size) {
-
……
-
}
默认值通过类型后面的 = 及给出的值来定义。覆盖方法总是使用与基类型方法相同的默认参数值。 当覆盖一个带有默认参数值的方法时,必须从签名中省略默认参数值:
-
open class A {
-
open fun foo(i: Int = 10) { …… }
-
}
-
-
class B : A() {
-
override fun foo(i: Int) { …… }
-
}
如果一个默认参数在一个无默认值的参数之前,那么该默认值只能通过使用命名参数调用该函数来使用:
-
fun foo(bar: Int = 0, baz: Int) { }
-
-
foo(baz = 1)
不过如果最后一个
lambda表达式参数从括号外传给函数函数调用,那么允许默认参数不传值:
-
fun foo(bar: Int = 0, baz: Int = 1, qux: () -> Unit) { }
-
-
foo(1) { println("hello") }
-
foo { println("hello") }
命名参数
可以在调用函数时使用命名的函数参数。当一个函数有大量的参数或默认参数时这会非常方便。
给定以下函数
-
fun reformat(str: String,
-
normalizeCase: Boolean = true,
-
upperCaseFirstLetter: Boolean = true,
-
divideByCamelHumps: Boolean = false,
-
wordSeparator: Char = ' ') {
-
……
-
}
我们可以使用默认参数来调用它
-
reformat(str, true, true, false, '_')
使用命名参数我们可以使代码更具有可读性
-
reformat(str,
-
normalizeCase = true,
-
upperCaseFirstLetter = true,
-
divideByCamelHumps = false,
-
wordSeparator = '_'
-
)
并且如果我们不需要所有的参数
-
reformat(str, wordSeparator = '_')
定义函数
定义一个有两个Int类型的入参,及返回类型是Int。
-
fun sum1(a:Int,b:Int) : Int {
-
return a + b
-
}
定义一个将表达式作为函数体、返回值类型为自动推断的函数
-
fun sum2(a:Int,b:Int) = a + b
定义一个函数,返回无意义的值
-
fun printSum1(a: Int, b: Int): Unit {
-
println("sum of $a and $b is ${a + b}")
-
}
其中${dosth}指的是内插语句