1.变量
var a: Int = 2 //声明一个变量
var a = 3 //明确知道类型的情况下可以不标明类型
var a: Int //不知道类型的情况下要声明类型
var a: String? = null //声明一个String?类型,值可以为String也可以为null
lateinit var a: String //必须为不可null类型,后面要用的时候再赋值
val b = 6 //声明一个不可变量用val
val b: String by lazy{"this is a String"} //懒加载,需要用的时候才加载这个变量
const val π = 3.14 //声明一个常量
2.函数
fun sum (a: Int, b: Int): Int {
return a+b
}//这里vararg指可变参数,可以传多个
fun div(c: Int, d: Float = 1f)
fun more(vararg a: Int) = 999 //这里sum()方法也可以简写为:fun sum (a: Int, b: Int) = a+b
//这里vararg指可变参数,可以传多个
fun main(args: String) {
val sum = sum(1, 2)
val ss = div(2, d = 3)
more(2, 35, 23)
println(sum)
}
3.for
fun main(args: String) {
for(i in 0..10) { //普通循环。必须左小右大
println(i)
}
for(i in 0 until 10) println(i) //左闭右开,取不到10
for(i in 0..10 step 2) println(i) //步长10, 0,2,4..
for(i in 10 downTo 0 step 2) println(i) //倒着循环,10,8,6...,左大必须用downTo
}
4.when
fun main(args: String) { //可以替代switch..case..
var i: Type
when(i) { //i可以为多种类型,可以做类型判断、数值判断等
i is String -> {}
i !is Float -> {}
i in 0..10 -> {}
else -> {} //when除了布尔值true&false之外必须要else兜底
}
when{ //布尔类型不用写i
boolean -> {}
else -> {}
}
}
5.类(class)
class Aclass() {
//属性
var name: String = ""
lateinit var b: String
//函数
fun getSomeInfo(): String {
this::b.isInitialized
return ""
}
}
6.interface
interface AAA{
fun aaa() //需要重写
fun ccc(){ //有方法体,不需要重写
}
}
7.object
object obcclass{
//成员函数。属性,单例静态函数
fun aaa()
}
obcclass.aaa()