当前位置: 首页 > news >正文

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”)

http://www.lryc.cn/news/220549.html

相关文章:

  • gma 1.x 气候气象指数计算源代码(分享)
  • 酒水展示预约小程序的效果如何
  • 蓝桥杯练习
  • python设计模式11:观察者模式
  • STM32 GPIO 描述
  • lerna在项目中使用
  • java智能在线考试系统源码 基于SpringBoot+Vue开发
  • 防逆流系统中防逆流电表的正确安装位置-安科瑞黄安南
  • Hello Qt!
  • pytorch加载的cifar10数据集,到底有没有经过归一化
  • Day1 ARM基础
  • ns3入门基础教程
  • 计算机视觉
  • NSSCTF第10页(3)
  • MySQL性能分析工具的使用
  • Uniapp使用AES128加解密16进制
  • C++基础——类与对象
  • 人工智能-卷积神经网络
  • MySQL的event的使用方法
  • Leetcode Daily Challenge 1845. Seat Reservation Manager
  • Blender vs 3ds Max:谁才是3D软件的未来
  • MapReduce:大数据处理的范式
  • 【已解决】ModuleNotFoundError: No module named ‘dgl‘
  • R 复习 菜鸟教程
  • 第十二章《搞懂算法:朴素贝叶斯是怎么回事》笔记
  • 【从0到1开发一个网关】网关Mock功能的实现
  • 前端框架Vue学习 ——(三)Vue生命周期
  • 相机滤镜软件Nevercenter CameraBag Photo mac中文版特点介绍
  • 游戏专用....
  • 第三方登录和第三方支付