这里写图片描述

继续来一起学习Kotlin基础吧~~

Kotlin常量与变量

常量

在Kotlin中什么是常量
val me:String = “helloworld”,val =value,val它是值类型。类似Java的final,不能重复赋值。
例如:

//运行时常量
val x= getX()
//编译器常量
const val x = 2

变量

什么是变量,var
例如:

var x = "helloworld"//定义变量
x = "hehe"//再次赋值

类型推导

什么是类型推导,那就是说编译器可以自动推导出目前的变量类型。
例如:

val myString  = "hello"//推导出String 类型
val myInt  = 5//int类型

这里主要是省略了不用写类型对比java的final String myString = “hello”,更加简洁。

函数(方法)

在kotlin函数语法中比java简洁有点儿像js,接下来我们来看看。

fun 函数名(参数列表):返回值类型{
    函数体
}
例如
fun kill(name :String){
printIn("hello,$name")
}

fun 函数名(参数列表):表达式
fun kill(name:String )=printIn("hello,$name")

匿名函数

必须要赋值给一个变量
fun()
例如

val kill = fun(name:String) = printIn("hello,$name");

Lambda表达式

什么是Lambda表达式,其实就是匿名函数。
语法如下:

{参数列表->函数体的最后一行是返回值}
val sum  = {a:Int,b:Int->a+b}

Lambda表达式的类型

()->Unit
无参数,返回值为 Unit
(Int)->Int
传入整型,返回一个整型
(String,(String)->String)->Boolean
传入字符串、Lambda表达式,返回Boolean

逻辑语句表达式

中缀表达式

只有一个参数,且用infix修饰的函数

class Book{
  infix fun on(place:String){
  }
}
另外一种写法
Book() on "My"

if表达式

if(a==b)..else if (a==c)..else

val x = if(b<0)0 else b

##when表达式
###特点
1、加强版的switch,支持任意类型
2、支持纯表达式条件分支(类似 if)
3、表达式与完整性

for循环

基本写法

-for(element in elements)…

给任意类实现Iterator方法

iterater运行机制

While循环

do…while(…)….
while()…

跳过跳出循环

continue

跳过当前循环用continue

break

终止循环

多层循环嵌套的终止结合标签使用

意思就是添加一个标签证明是终止外层循环还是内层循环

Outter@for(...){
    Inner@while(i<0){
        if(..){
        break@Outter//标签指的是外循环
        }
    }
}

异常捕获

try..catch..

1、catch分支匹配异常类型
2、表达式,可以用来赋值

val resuly = try{
1
}catch(e:Exception){
0
}

finally

无论代码是否抛出异常都会执行

具名参数

给函数的实参附上形参

sum(arg1 = 1,arg2 = 2)

变长参数添加vararg关键字

某参数可以接收多个值
可以不为最后一个参数
如果传参时有歧义,需要使用具名参数

action(1,2,3,4)
fun action(vararg ints:Int){
}

Spread Operator(星号)

只支持展开Array
只用于变长参数列表的实参
不能重载
不算真正意义上的符

val array = intArrayOf(1,2,3,5)
action(*array )

添加星号数组代表展开数组

默认参数

为函数参数指定默认值
可以为任意位置的参数指定默认值
传参时如果有引起歧义,需要使用具名参数来标识

val array = intArrayOf(1,2,3,5)
action(ints = *array,name = "hello") //歧义了--使用具名参数标识传int值,第一个参数不传
fun action(d:Double=1.0,vararg ints:Int,name:String){
}

//里面的d是给了默认值1.0

以上是我的学习小笔记,希望对大家有帮助。有疑问可以留言哦!!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐