Kotlin笔记1—基础

Kotlin笔记1—基础

1 val 与var

val 用于值从不更改的变量。使用 val 声明的变量无法重新赋值。
var 用于值可以更改的变量

2 Null安全

一般不能为null val languageName: String = null // 错误

加了?可为null val languageName: String? = null // 正确

3 条件语句if/else

4 条件表达式

相当于三元运算符 ?:

val answerString: String = if (count == 42) {
    "I have the answer."
} else if (count > 35) {
    "The answer is close."
} else {
    "The answer eludes me."
}

println(answerString)

条件表达式的另一种表示:用when

val answerString = when {
    count == 42 -> "I have the answer."
    count > 35 -> "The answer is close."
    else -> "The answer eludes me."
}

println(answerString)

5 函数

fun 函数名(参数:参数类型):返回值类型{
}

fun generateAnswerString(countThreshold: Int): String {
    val answerString = if (count > countThreshold) {
        "I have the answer."
    } else {
        "The answer eludes me."
    }

    return answerString
}

val answerString = generateAnswerString(42)

简化:省略局部变量

fun generateAnswerString(countThreshold: Int): String {
    return if (count > countThreshold) {
        "I have the answer."
    } else {
        "The answer eludes me."
    }
}

进一步简化:省略return符号

fun generateAnswerString(countThreshold: Int): String = if (count > countThreshold) {
        "I have the answer"
    } else {
        "The answer eludes me"
    }

6 匿名函数

val stringLengthFunc: (String) -> Int = { input ->
    input.length
}
// 调用
val stringLength: Int = stringLengthFunc("Android")

(String) -> Int    表示函数的类型

7 高阶函数

一个函数可以将另一个函数当作参数。将其他函数用作参数的函数称为“高阶函数”(相当于 Java 中使用回调接口相同)

fun stringMapper(str: String, mapper: (String) -> Int): Int {
    // Invoke function
    return mapper(str)
}

// 调用

stringMapper("Android", { input ->
    input.length
})

// 简化调用(如果匿名函数是在某个函数上定义的最后一个参数,则您可以在用于调用该函数的圆括号之外传递它)

stringMapper("Android") { input ->
    input.length
}

8 类

默认提供了构造函数和get/set方法

class Car {
    val wheels = listOf<Wheel>()
}

// 调用

val car = Car() // construct a Car
val wheels = car.wheels // retrieve the wheels value from the Car

含有构造函数的类,构造函数里的参数带var 或者 val 时,该参数也是该类的属性

class Car(val wheels: List<Wheel>)

class A 等价于 class A { } 等价于 class A() 等价于 class A construct() 

9 构造函数与init执行顺序

  1. 伴生对象中成员变量初始化
  2. 伴生对象中init代码块按先后顺序执行
  3. 类的主构造函数
  4. 类的成员变量执行
  5. 类的init代码块按先后顺序执行
  6. 类的次构造函数
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子林Android

感谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值