美文网首页
Kotlin学习

Kotlin学习

作者: 我会有只猫的_2c34 | 来源:发表于2020-07-11 19:32 被阅读0次

    kotlin基础

    kotlin入口及函数定义

    函数定义使用关键字 fun,参数格式为:参数 : 类型

    fun sum(a: Int, b: Int): Int {   // Int 参数,返回值 Int
        return a + b
    }
    

    表达式作为函数体,返回类型自动推断

    fun sum(a: Int, b: Int) = a + b
    
    public fun sum(a: Int, b: Int): Int = a + b   // public 方法则必须明确写出返回类型
    

    无返回值的函数(类似Java中的void):

    fun printSum(a: Int, b: Int): Unit { 
        print(a + b)
    }
    
    // 如果是返回 Unit类型,则可以省略(对于public方法也是这样):
    public fun printSum(a: Int, b: Int) { 
        print(a + b)
    }
    

    函数的变长参数可以用 vararg 关键字进行标识(类似与Java的...)

    fun vars(vararg v:Int){
        for(vt in v){
            print(vt)
        }
    }
    

    kotlin的入口函数

    fun main() {
        println("---main---")
    }
    

    kotlin数据类型

    1、Number类型

    kotlin有6中基本数值类型,包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。

    var aLong: Long = 123L
    var aInt: Int = 1234567890
    var aShort: Short = 12345
    
    var aFloat: Float = 23F
    var aDouble: Double = 23.0
    
    var aByte: Byte = 127
    
    类型 位宽
    Byte 8
    Short 16
    Int 32
    Long 64
    Float 32
    Double 64

    基本类型的装箱与拆箱
    Kotlin 不再区分装箱与非装箱类型,在需要的时候编译器会帮我们自动的选择是使用基本类型还是装箱类型。

    2、Boolean类型

    布尔类型有两个值: true 和 false ,和数值类型一样,在必要的时候会进行装箱

    var isFirst: Boolean = true
    var isSecond: Boolean = false
    

    3、Char类型

    占两个字节,用‘’引起来表示一个Unicode 字符
    不同于Java,char不是一个数值类型,无法自动提升为int型等数值类型

    var aChar: Char = '靠'
    var nChar: Char = '他'
    var bChar: Char = '灵'
    

    4、String类型

    大体上使用和Java一样,用“”引起来,表示“一串”char
    差异1:字符串比较
    kotin的==相当于是Java的equals,表示比较内容;
    kotin的===相当于是Java的==,表示比较内存地址。

    var aName: String = "Kotlin"
    var bName: String = "Kotlin"
    
    println(aName == bName) // true
    println(aName === bName)// false
    

    差异2:字符串比较
    在Kotlin中,String是可以包含字符串模版的,具体使用就是在${}的大括号内是可以执行代码的。

    var a: Int = 1
    var b: Int = 2
    println("$a + $b = ${a + b}")
    

    5、数组类型

    5.1、数组创建

    方法1:使用arrayOf()方法创建数组

    val a = arrayOf(1, 2, 3)
    

    方法2:创建指定长度,所有元素为空的数组

    val a = arrayOfNulls<Int>(3)
    

    方法3:动态创建数组

    // 创建一个 Array 初始化为 ["0", "1", "4", "9", "16"] 
    val asc = Array(5) { i -> (i * i).toString() }
    

    5.2、原生类型数组

    Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array 赋值给 Array,以防止可能的运行时失败。

    class Array private constructor() { 
        val size: 
        Int operator fun get(index: Int): T 
        operator fun set(index: Int, value: T): Unit
        operator fun iterator(): Iterator 
        // …… 
    }
    

    由于kotlin的Array需要传递范型,为了避免装箱拆箱的操作,kotlin还有还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,其用法同Array一样

    val arrayOfInt: IntArray = intArrayOf(1, 2, 3)
    val arrayOfChar: CharArray = charArrayOf('中', '国')
    

    5.3、数组遍历

    val array = arrayOf(1, 2, 3)
    for (item in array) { println(item) }
    
    // 带索引遍历数组
    for (i in array.indices) { 
        println(i.toString() + "->" + array[i]) 
    }
    
    // 遍历元素(带索引)
    for ((index, item) in array.withIndex()) {
        println("$index->$item")
    }
    
    // forRach遍历元素
    array.forEach { println(it) }
    
    // forRach增强版(带索引)
    array.forEachIndexed { index, item ->
        println("$index:$item") 
    }
    

    kotlin使用技巧

    tips1: java项目添加kotlin支持
    原有的Java项目快速进行对Kotlin的支持

    kotlin_tips1.png

    tips2: Java文件转化为kotlin
    新入坑的小伙伴可以借助该功能快速学习Java代码该如何用Kotlin覆写

    kotlin_tips2.png

    相关文章

      网友评论

          本文标题:Kotlin学习

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