【Kotlin】基本介绍和使用

kotlin和java的对比

在这里插入图片描述

使用场景

在这里插入图片描述

kotlin主要是封装java,对java进行了优化

运行流程

java

在这里插入图片描述

编译时使用javac
java虚拟机内包含java运行时库

kotlin

在这里插入图片描述

编译时使用kotlinc
也需要通过jvm虚拟机解释执行
kotlin运行时专门有单独的运行时库

查看kotlin对应的java代码

  • 找到kotlin生成的字节码
  • 反编译字节码,查看java代码

基本数据类型

    var b: Boolean = false//1byte
    var byte: Byte = 0//1byte
    var short: Short = 0//2byte
    var i: Int = 0//4byte
    var f: Float = 0f//4byte
    var d: Double = 0.8989//8byte
    var l: Long = 0L//8byte
    val c: Char = 'c'//2byte

在这里插入图片描述
在这里插入图片描述

基本数据类型首字母是大写的
根据不同的使用场景,能自动的装箱和拆箱,底层java也是按原来的实现方式

智能类型推断和类型转换

var a = 10 类型推断为Int,类型安全,类型一旦确定就不能改变了
与js不同,kotlin是强类型语言

kotlin中基本数据类型的类型转换是使用toXxx(),使用to进行类型转换
对象类型的转换是使用as关键字

可变变量和不可变变量

var可变变量

val不可变变量

//常量
const val WEEK = "haha"
fun main() {

    var a = 10
    //不可变量,与常量不同,常量是编译时就确定的
    //不可变量还可以通过反射修改值
    val b = 20

    a = 20
    //b = 30
    println(a)
    println(b)
}

字符串

val s = “hello world”

原样输出

    //原样输出
    val ss = """
        hello
        world
    """.trimIndent()

删除空格

    //普通删除空格
    val s1 = " aa "
    println(s1.trim())

    //kotlin中删除空格trimIndent()
    val s2 = """
        a
        b
        c
    """.trimIndent()

    //把前缀和空格删除
    val s3 = """
        6a
        6b
        6c
    """.trimMargin("6")

字符串的比较

    val s4 = "abc"
    val s5 = String(charArrayOf('a', 'b', 'c'))
    println(s4 == s5)//比较的是值 true
    println(s4 === s5)//比较的是hashcode false

切割和截取

  • split可以多条件切割
    val s6 = "a.b+c"
    val s61: List<String> = s6.split(".", "+")//[a,b,c]
  • 截取
    val s7 = "1234567"
    println(s7.substring(0, 6))
    println(s7.substring(0 until 6))//使用区间


    //把3之前的字符串截取
    println(s7.substringBefore("3"))//12
    //把3之后的字符串截取
    println(s7.substringAfter("3"))//4567

字符串模版

“${变量/表达式}”

元组

二元元组Pair

    //姓名 年龄
    //存储两个值
    val pair = Pair("张三", 20)
    println(pair.first)
    println(pair.second)

    val pair1 = "张三" to 20
    println(pair.first)
    println(pair.second)

三元元组Triple

    //三元元组,存储三个值
    val triple = Triple("张三", "zs", 30)
    println(triple.first)
    println(triple.second)
    println(triple.third)

空值处理

    //?表示可空类型
    var s: String? = null
    //强制告诉编译器不检查是否为空,如果对象为空,照样抛出异常
    //s!!.toInt()
    //空安全调用符?.,不会抛出异常
    println(s?.toInt())
    //?:  elvis操作符
    println(s?.toInt() ?: -1)

函数

输入输出函数

输出println()

输入readLine()

普通函数

顶层函数

不依赖于class类单独存在的函数

嵌套函数

函数中可以定义函数


    var num = 10
    fun say() {
        //可以访问外部函数的属性
        num = 11
        println(num)
    }
    //调用时,必须在定义的后面
    say()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值