一套搞定Kotliln (学习笔记一)

目录

Kotlin的垮平台特性

声明变量

内置数据类型

变量

类型推断

编译时常量

查看Kotlin字节码

Kotlin的引用类型与基本数据类型

range表达式

when表达式

String模板

函数

函数参数

Unit函数

Nothing类型

反引号中的函数名


Kotlin的垮平台特性:

        Kotlin不仅支持编写代码在虚拟机上运行,而且还是一门垮平台的通用型语言,我们可以用Kotlin开发各种类型的原生应用,如Android、 macOS, Windows, Javascript应用。

        Kotlin能脱离虚拟机层,直接编译成可以在Windows、Linux和macOS平台上运行的原生二进制代码。


声明变量:


内置数据类型:


变量:

  • 要声明可修改变量,使用var关键字
  • 要声明只读变量,要使用val关键字

类型推断:

        对于已声明并赋值的变量,它允许你省略类型定义(但是多态情况下得用泛型)


编译时常量:

        定义常量的关键字是const

注意要点

  1. 只有在单例类,companion object或顶层方法中才可以使用const关键字。
  2. 编译时常量只能在函数之外定义,因为编译时常量必须在编译时赋值,而函数都是在运行时才调用,函数内的变量也是在运行时赋值,编译时常量要在这些变量赋值前就已经存在
  3. 编译时常量只能是常见的基本数据类型:String,Int,Double,Float,Long,Short,Byte,Char,Boolean
  4. 只能在函数之外,不能不赋值和给null值,变量名大写

查看Kotlin字节码:

        查看Kotlin编译之后的字节码,有助于我们深入理解Kotlin语言

两种方式

  • Shift键两次,输入Show ktlin
  • Tools ->Kotlin->Show Kotlin Bytecode

查看字节码后发现const val MAX =200 相当于 public final static I MAX = 200


Kotlin的引用类型与基本数据类型:

  • Java有两种数据类型: 引用类型与基本数据类型
  • Kotlin只提供引用类型这一种数据类型,出于高性能的需要,Kotlin编译器会在java字节码中改用基本数据类型

range表达式:

        in A..B, in关键字用来检查某个值是否在指定范围之内

fun main(){
    val age =4
    if(age in 0..3){
        println(age)
    }else if(age in 3..10){
        println("未知")
    }
    if (age !in 0..3 ){
        println("不存在")
    }
}

when表达式:

  • 允许你编写条件式,在某个条件满足时,执行相应的代码相当于java中的switch case但是比它更好用
  • 只要代码包含 else if分支,都建议用when表达式
  • 最后执行的代码会作为返回值返回
fun main(){
    val school = "小学"
    val level = when(school){
        "学前班" -> "幼儿"
        "小学" -> "少儿"
        else -> {
            println("未知")
        }
    }
    println(level)
}

String模板:

  • 在字符串的双引号内用$加变量名转换为字符串
  • 还支持字符串里计算表达时的值并插入结果,但要在$后加{},添加在{}中的任何表达式,都会作为字符串的一部分值
fun main(){
    val origin = "Jack"
    val dest = "Rose"
    println("$origin love $dest")

    val flag = false
    println("Answer is: ${if(flag) "没关系" else "对不起"}")
}

函数:

        访问修饰符默认时public

fun main(){
    doSomething(5,false)
}
private fun doSomething(age:Int, flag: Boolean):String{
    return "result"
}

函数参数:

        默认参数

                如果不打算传入值参,可以预先给参数指定默认值

        具名函数参数

                如果使用命名值参,就可以不用管值参的顺序

fun main(){
    fix("小米",5)
    fix("小米")//不传值则会使用默认的缺省值
    fix(age=10,name="小米")//具名参数可以不用管函数赋值的顺序
}

fun fix(name:String, age:Int = 2){
    println(name + age)
}

Unit函数:

        不是所有函数都有返回值,Kotlin中没有返回值的函数叫Unit函数,也就是说它的返回类型是Unit。在Kotlin之前,函数不返回任何东西用void描述,意思是“没有返回类型,不会带来什么,忽略它”,也就是说如果函数不返回任何东西,就忽略类型。但是,void这种解决方案无法解释现代语言的一个重要特征,泛型(因为泛型要求你有个类型)。


Nothing类型:

        TODO函数的任务就是抛出异常,就是永远别指望它运行成功,返回Nothing类型。


反引号中的函数名:

        为了支持Kotlin和Java互操作,而Kotlin和Java各自却有着不同的保留关键字,不能作为函数名,使用反引号括住函数名就能避免任何冲突。

新建个java类

在kotlin文件中调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值