美文网首页
Kotlin 学习总结

Kotlin 学习总结

作者: SoaringHeart | 来源:发表于2019-08-05 15:55 被阅读0次

    Kotlin 学习笔记

    Kotlin 是一门完全面向对象(Object Oriented)的语言。在Kotlin中一切皆是对象。所有对象皆继承自Any(类似其他语言中的所有对象的祖先类Object)。
    
    ###注释 
    // 行注释
    /* 多行的
       块注释。 */
    

    基本数值类型

    Kotlin的基本数值类型包括Byte、Short、Int、Long、Float、Double等,这些类型都是内置类型。
    
    在 Kotlin 中,函数是对象,基本类型也是对象,所有东西都是对象:数字、字符、布尔和数组。同时,Kotlin提供多个内建对象(buildin object):Number,Char,Boolean,String,Array等。(JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等等。此外,JavaScript 提供多个内建对象,比如 String、Date、Array 等等。)
    
    ### 常量、变量
    使用val 定义一次赋值(只读)的局部变量;使用var定义可变变量
    
    val a: Int = 1  // 立即赋值
    val b = 2   // 自动推断出 `Int` 类型
    val c: Int  // 如果没有初始值类型不能省略
    
    ### 使用is 运算符进行类型检测
    is 运算符检测一个表达式是否某类型的一个实例。
    
    ### 字符串
    字符串可以包含模板表达式。模板表达式以美元符号($)开始或者是 ${任意表达式}。
    val fooTemplateString = "$fooString has ${fooString.length} characters"
    
    val str = "kotlin very good"
    str.first()   <=>   str[0]   <=>   str.get(0)
    val a = "Hello"
    val b = "World"
    val c = "$a $b" 或者 val c = a + b (function a.plus(b))
    输出将是: Hello World
    
    val sb = StringBuilder()
    sb.append(a).append(b)
    val c = sb.toString()
    

    集合

    不可变集合:List<E>、Set<E>、Map<K,V>
    可变类型集合: MutableList<E>、MutableSet<E>、MutableMap<K,V>
    Set 类型集合的使用和List类型集合大致相同,Set集合会把重复的元素去除掉。
    
    List类型
    声明并初始化List的集合:使用listOf(..)函数
    声明并初始化MutableList的集合:使用mutableListOf(..)函数
    val mutableList = mutableListOf<String>("1","2","3","4","5")  // 确定元素的值类型
    mutableList.add("6")  // 添加元素
    mutableList.remove(1)   // 删除某一元素
    mutableList.clear()   // 清空集合
    其他方法 first, last, contains, indexOf, elementAt,reversed, sortedBy(),
    
    Map<K,V>类型
    不可变的Map类型集合的初始化使用:mapOf()函数
    可变的Map类型集合的初始化使用:mutableMapOf()函数
    val map2 = mapOf<Int,String>(1 to "value1" , 2 to "value2")
    

    控制流

    1. 常规if(无三元运算符)
    2. for 循环可以对任何提供迭代器(iterator)的对象进行遍历
    for (item in collection) print(item)
    带索引 withIndex
    for ((index, value) in array.withIndex()) {
        println("the element at $index is $value")
    }
    
    // it并不是Kotlin中的一个关键字(保留字)。it是在当一个高阶函数中Lambda表达式的参数只有一个的时候可以使用it来使用此参数。it可表示为单个参数的隐式名称,是Kotlin语言约定的。)
    iterator.forEach {
        println("The element is $it")
    }
    map2.forEach{ key,value -> 
        println("$key \t $value")
    }
    //forEachIndexed遍历集合并且可以拿到下标index
    stringList.forEachIndexed { index, string -> 
        println("forEachIndexed:$index $string") 
    }
    
    4. when 取代了类 C 语言的 switch 操作符。其最简单的形式如下:
    when (x) {
        1 -> print("x == 1")
        2 -> print("x == 2")
        else -> { // 注意这个块
            print("x is neither 1 nor 2")
        }
    }
    
    5. 常规While 循环
    
    6. 在循环中支持传统的return、break 与 continue 操作符。
    

    函数

    [访问控制符] fun 方法名(参数列表) [:返回值类型] {}
    
    Unit 返回类型可以省略:
    fun printSum(a: Int, b: Int): Unit {}
    (高阶函数例)传入两个参数,并传入一个函数来实现他们不同的逻辑
    fun resultByOpt(num1 : Int , num2 : Int , result : (Int ,Int) -> Int) : Int{
        return result(num1,num2)
    }
    变长参数函数(关键字vararg)
    fun hasEmpty(vararg strArray: String?): Boolean{
        for (str in strArray){
            if ("".equals(str) || str == null)
                return true 
        }
        return false
    }
    

    getter 和 setter 都是可选
    

    相关文章

      网友评论

          本文标题:Kotlin 学习总结

          本文链接:https://www.haomeiwen.com/subject/krmmdctx.html