Kotlin基础知识

一、变量

1.val 不可变得变量

val a : Int = 10

2.var 可变的变量

var a : Int = 10

二、函数

定义函数关键字 fun

fun getName (param1 : Int, param2 : Int) : Int {

} 

fun getName (param1 : Int, param2 : Int) = max(param1, param2)

三、程序的逻辑控制

1.if (同java,但是有返回值)

val a = if (a > b) {
 a 
} else {
 b 
}

2.when (类似java中的switch, 有返回值)

when(name) {
 "小明" -> 20
 "小红" -> 21
 else -> 0
}

is相当于java的instanceof

when(name) {

  is Int -> 20

  is Double -> 20.0

  else -> 0

}

3.for

val range = 0..10   //(闭区间[0,10])

val range = 0 until 10   //[0,10)

val range = 10 downTo 0  //(降序区间)



for(i in range step 2)   //(step2 相当于Java中 i = i + 2)

四、面向对象编程

1.类与对象

class Person{

  var name = ""
  var age = 0

  fun eat() {

  }
}

//实例化
val per = Person();

2.继承

默认class都 不可以继承,使用open关键字

open class Person{
  var name = ""
  var age = 0;

  fun eat() {

  }
}


class Student : Person() {

  var sno = " "
  var grade = 0

}

3.构造函数

class Student(val sno : String, val grade : Int) : Person() {

  init {
  //构造函数方法体
  }

}

4.次构造函数(constructor关键字定义)

class Student(val sno : String, val grade : Int) : Person() {

  constructor(val sno : String) : this(" ", 0){

  }

  constructor() : this(" ") {

  }

}

没有主构造函数时,次构造函数可使用super调用父类的主构造函数

5.接口

interface Stydy{

  fun readBooks()

  fun doHomeWork()

}



class Student(val sno : String, val grade : Int) : Person() , Study{

  override fun readBooks() {
    //XXX
  }

  override fun doHomeWork() {
   //XXX
  }

}

6.修饰符

public 默认

protected 当前类子类可见

internal 同一模块中的类可见

7.数据类 (data关键字)

data class Student(val sno : String, val grade : Int) {

}

8.单例类 (object关键字)

object Student {

}

9.静态方法

class Util {

  companion object{

    @JvmStatic //单例类或companion object中的方法

    fun doHomeWork() {

    }

  }

}

五、集合

1.list

val list = listOf("a", "b","c") //(不可变集合)

val list = mutableListOf("a", "b","c") //(可变集合)

2.set

val set = setOf("a", "b","c") //(不可变集合)

val set = mutableSetOf("a", "b","c") //(可变集合)

3.map (不建议put()、get())

val map = HashMap<String, Int>()
map["小明"] = 21
map["小红"] = 20

val age = map["小明"]

val map = mapOf("小明" to 21, "小红" to 20) //(不可变集合)
val map = mutableMapOf("小明" to 21, "小红" to 20) //(可变集合)

六、Lambda表达式

{参数名1:参数类型,参数名2:参数类型 -> 函数体}

当参数列表只有一个函数,可不用声明使用 it 关键字代替

七、函数式API

1.map (把集合中的每个元素都映射成另外的值)

val newList = list.map{it.toUpperCase()}

2.filter (过滤集合中的数据)

val newList = list.fifter{it.length >= 5}.map{it.toUpperCase()}

3.any (判断集合中是否存在符合条件的元素)

val anyResult= list.any{it.length >= 5}

4.all (判断集合中全部元素是否符合条件)

val allResult= list.any{it.length >= 5}

八、空指针检查

1. ?. (当对象不为空调用该方法,为空什么都不做)

study?.readBooks()

2.?: (这个操作符左右两边都接收一个表达式,如果左边表达式不为空返回左边表达式,否则返回右边的表达式)

val c = a ?: b

3.!! (强行通过编译 ,如果为空抛出空指针异常)

study!!.readBooks()

九、字符串内嵌表达式

${} 
$ //(只有一个变量可以省略大括号)

十、函数参数的默认值

fun readBooks(name : String, time Int = 60) {

}

readBooks("小明")
readBooks(name = "小明")

次功能可替换次构造函数

十一、标准函数

1.let

obj.let{ obj2 ->

}

study?.let { it ->
  it.readBooks()
}

2.with

val result = with(obj) {

  //这里是obj的上下文

  "value" //with函数的返回值

}

3.run (只接收一个Lambda参数)

val result = obj.run {

  //这里是obj的上下文

  "value" //with函数的返回值

}

4.apply () (只接收一个Lambda参数,无法指定返回值)

val result = obj.apply {

  //这里是obj的上下文

}

//result == obj

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值