• Kotlin学习笔记-Kotlin基础-01


    变量声明

    var:用于值不改变的变量,使用val声明的变量无法重新赋值

    val:用于值可以改变的变量

    变量声明格式

    var/val data(变量名称) : Int(变量类型)

    Kotlin基本数据类:

    Int、Byte、Short、Long、Float、Double

    Kotlin类型推断

    Kotlin编译器可以根据所赋值的类型来推断其类型

    如val str = “data”

    Null安全

    Kotlin变量不能持有Null值,如果要使变量持有Null,它必须是可为Null类型,可以在变量类型后面加上?后缀,将变量指定为可为Null。如:

    Val languageName:String?=null

    ?表示可为空

    !!表示可能为空的值不为空(非Null断言符)

    ?:该运算符是处理变量为空的情况

    条件语句

    If  else if  else

    条件语句可作为返回值返回给变量

    Val answerString:String = if() {“…”} else if(){“…”} else {“…”}

    When类比java的switch,但是判定条件比java灵活

    Val answerString = when {

    Count == 42 ->””

    Couint >= 35 -> “”

    Else  -> “”
    }

    函数

    使用fun关键字声明,例如

    fun generateAnswerString() : String {

           val answerString = “”

           return answerString

    }

    带参数的函数

    fun generateAnswerString(a : String) :String {

           …

    }

    匿名函数

    val stringLenthFunc: (String)->Int = {input->

           input.length

    }

    高阶函数:一个函数可以将另一个函数当做参数(类似java中的回调接口)

    fun stringMapper(str: String, mapper:(String)->Int):Int {

    return mapper(str)

    }

    类(使用class关键字来定义)

    class Car

    属性(通过val、var关键字来定义)

    Val data : Int = 0

    Getter与setter

    默认情况下kotlin的属性都自带上述两个方法

    如果需要对该属性的获取与赋值进行控制,则需要重写对应方法

    类函数和封装

    Private关键字

    数据类型和单例类

    数据类只处理数据相关,与java bean类似,通常需要实现其get、set、hashCode、equals、toString等方法

    data class UserBean(val id: String, val name: String, val pwd : String)

    单例类

    object Singleton {}

    Lambda

    函数式API

    匿名内部类需要使用object

    Thread(object: Runnable {

           Override fun run() {

                  Println(“test”)

    }

    }).start()

    Null判断

    let函数

    let不是关键字,而是一个函数,提供了函数式API的编程接口,会将调用者作为参数传递到lambda表达式,调用之后会立马执行lambda表达式的逻辑

    obj.let {it -> //it就是obj

    }

    内嵌表达式

    var name = “a”

    var age = 20

    println(“my name is $name, age is $age”)

    使用${}可执行更复杂的操作

    println(“${if (1 < 2) “a” else “b”}. test”)

  • 相关阅读:
    nginx配置实例-负载均衡
    线性表-----栈(栈的初始化、建立、入栈、出栈、遍历、清空等操作)
    风口浪尖,不想失业?你得学会接口自动化测试才能站稳脚步...
    基于Python文本内容/情感的对微博文本自动二元分类
    Java.lang.Class类 getSimpleName()方法有什么功能呢?
    使用js对象简单模拟虚拟dom的渲染
    电脑msvcp140丢失报错解决方法,msvcp140.dll重新安装的解决方法
    关于Linux性能调优中网络I/O的一些笔记
    Centos7安装kvm,配置虚拟机网络
    图书管理系统(Java实现)[附完整代码]
  • 原文地址:https://blog.csdn.net/Dragonlongbo/article/details/134257516