• Kotlin基本语法


    Kotlin基本语法

    参考《第一行代码——Android(第3版)》做些笔记

    一、变量

    1、变量声明

    val aaa
    var bbb
    
    • 1
    • 2

    val常量 只能初始化赋值一次

    var变量 可以多次赋值

    无须声明类型,可类型推导。

    使用示例:

    fun printaaa(){
        val aaa = 123
        println("aaa is "+aaa)
    }
    
    • 1
    • 2
    • 3
    • 4

    +这里看出来,kotlin很现代,应该是有很多新语言特性。如果真的颠覆了Java,Java老白兔岌岌可危。

    注意 不加分号。不看缩进(这就是我讨厌python 的原因)。

    2、带类型声明

    val aaa:Int 
    
    • 1

    类型都封装到类里了,不再是关键字了?那是不是有method可用?

    常用类型和C/C++一样,不过第一个字母变成大写,变成了类。

    二、函数

    关键字fun来声明:

    fun func(para1:Int, para2:String):Int{
        code here
        return 0
    }
    
    • 1
    • 2
    • 3
    • 4

    ()可以为空,表示无参数。

    :Int表示返回值类型,没有返回值可以不写。

    这里有适用于单行代码函数的语法糖

    fun func(参数1,参数2):Int=单行表达式
    
    • 1

    :Int也可省略,利用上类型推导。

    三、逻辑控制

    1、if…else

    使用上和别的没区别,不同的是会把每个分支最后一句的表达式当作if…else语句的返回值。

    精简用法:

    fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
    
    • 1

    2、when

    类似于switch,但是不用break。感觉更好用。

    比较进入–匹配值 -> { 执行逻辑 }

    带参数:

    fun getnum(name: String) = when (name) {
        "aaa" -> 1
        "bbb" -> 2
        "cc" -> 3
        "d" -> 4
        else -> 0
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    不带参数:

    实际上使用起来,感觉像是把参数套入下方的匹配值表达式中比较,如果表达式成立,就执行右边的内容:

    fun getnum(name: String) = when {
        name.startsWith("Wang") -> 60
        name == "Li" -> 77
        name == "Zhang" -> 95
        else -> 0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    四、循环

    有两种循环,while 和 for in。

    while和其他的语言没什么区别。

    for in (我觉得 新出来的一些语言是不是都喜欢搞 for in 这种东西)比较不同。

    声明一个从小到大的闭区间:

    val range = 0..100
    
    • 1

    左闭右开区间:

    val range = 0 until 100
    
    • 1

    使用示例:

    fun main(){
        //升
        for (i in 0 until 100 step 10){
            println(i)
        }
        //降
        for (i in 100 downTo 50 step 5){
            println(5)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    朴素贝叶斯Naive Bayesian分类器 (NBC)
    【Docker】Linux各系统安装Docker,Docker-compose方式汇总
    ubuntu20.04安装cmake
    MQTT代理和C# 简单连接代理 简单订阅和发送消息含测试demo
    求两个数二进制中不同位的个数
    基于微服务、Java、Springcloud、Vue、MySQL开发的智慧工地管理系统源码
    Java设计模式
    JavaScript 68 JavaScript Browser BOM 68.7 JavaScript Timing 事件
    高德地图开发(六)——计算距离
    面试经典-15-跳跃游戏 II
  • 原文地址:https://blog.csdn.net/kuno_y/article/details/125617399