码迷,mamicode.com
首页 > 其他好文 > 详细

Kotlin基础

时间:2021-04-13 12:34:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:vararg   延迟加载   赋值   ems   code   函数返回值   type   ice   构造   

引言

Kotlin是一种非常简洁的语言,它省略了java中许多繁重的写法。

基本语法

入门必学

  • 可变类型var,不可变类型val
  • 函数定义
    fun 函数名(arg1: type1, arg2: type2) : returnType{
      return returnValue
    }
    
    例如:
    fun add(i: Int, j: Int): Int{
      return i + j
    }
    
    或者
    fun add(i: Int,j Int): Int = i + j
    
  • 变长参数列表
    fun add(vararg list:Int): Int{
        var result = 0
        for (i:Int in list){
            result += i
        }
        return result
    }
    
  • lombda表达式函数
    var add: (Int, Int) -> Int = {i,j -> i + j}
    
  • 模式匹配
    val age = 100
    val name = "张启灵"
    println("$name的年龄是$age")
    
  • 空指针避免调用,在Kotlin中可通过?来进行空指针避免调用,注意,这里函数的参数为String?,也就意味着参数可null,如果msg:String,那么在调用时是不能传可能为null的值的。此外,Kotlin使用java中的变量或方法,都需要进行?处理
    fun printMsg(msg:String?) {
       msg?.length    // 如果msg==null,这句话不会被调用
     }
    
  • 空指针二目
    fun printMsg(msg:String?) {
      println(msg?:"default value")    // 若msg为空,则打印default value,否则打印msg
    }
    
  • 不管是否为空,强制传值
    printMsg(msg!!)  // 这种情况需要msg一定不为null,否则会发生空指针异常
    
  • 函数返回值可能为null
    fun getValue():String? = value  // 这个value肯能为null
    

遍历

  • 普通循环
    for (i:Int in 1..9)
    
    vs java
    for (int i = 1; i <= 9; i++)
    
  • 倒序循环
    for (i:Int in 9 downTo 1)
    
    vs java
    for (int i = 9;i >= 1; i--)
    
  • 循环增加step
    for (i:Int in 1..20 step 2) {
      println(i)
    }
    
    vs java
    for (int i = 0; i <= 20; i+= 2)
    
  • 包头不包尾
    for (i:Int in 1 until 10)
    
    vs java
    for (int i = 0; i < 10; i++)
    

数组

通过arrayOf和Array构造函数定义数组

  val numbers:Array<Int> = arrayOf(1,2,3,4,5)
  for(i:Int in numbers) { println(i) }

  val numbers2:Array<Int> = Array(20, {value: Int->(value + 1000)})
  for(i:Int in numbers2) { println(i) }  // 结果都加了1000

表达式

  var maxValue:Int = if (number1 > number2) num1 else num2
  var minValue:Int = if (number1 < number2) {
    number1
  } else {
    number2
  }

in关键字

用于判断是否在一个数组中

if (x in array) {
  //..
}       
if(x in 1..9) {
  // ..
} 

when

when通常用于代替if else if

  var number = 5
  when (number) {
    1-> {//..}
    2-> {//..}
    //..
    5-> {//..}
  }

  when (number) {
    in array1 -> //..
    in array2 -> //..
  }

  //还可以把when赋值给一个表达式
  var result = when (number) {
      5 -> {"星期五"}
      else -> "周末"
  }

多重循环

通过T@进行标记,类似于java中的Label

T@
for(i:Int in array1){
    for(j:Int in array2){
        break@T
    }
}

集合

集合和数组的定义很类似

var items:list<String> = listOf<String>("a","b","c")

//遍历
for(item:String in items){
    println(item)
}

items.forEach{
    println(it)
}

for(index in items.indices){
    println("下标:$index,对应的值,${item[index]}")
}

延迟加载lateint/lazy

lateinit

lateint var a:String  //这种方式可以不需要在定义时初始化
val a2:String by lazy{  //lazy也是懒加载的一种方式,但只能给val用,在第一次被调用时初始化
    "str"
}

总结

本节主要描述了Kotlin的简单使用,如空处理、函数、循环、懒加载、数组、in、when等

Kotlin基础

标签:vararg   延迟加载   赋值   ems   code   函数返回值   type   ice   构造   

原文地址:https://www.cnblogs.com/csluoyao/p/14651080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!