kotlin复习提高篇Day01 2020.7.18

复习篇的内容是根据《第一行代码》和之前的课堂内容写的

一.kotlin语言的特性

①更加简洁,对于同样的功能,使用kotlin开发的代码量可能会比使用Java开发的减少百分之五十甚至更多
②更加高级,使得开发效率大大提升
③kotlin在语言安全性方面下了很多功夫,几乎杜绝了空指针这个全球崩溃率最高的异常
④完全兼容Java,使得kotlin在加入了诸多新特性的同时,还继承了Java的全部财富
⑤拥有出色的类型推导机制
⑥kotlin完全抛弃了Java中的基本数据类型,全部使用了对象数据类型

二.变量

val是value(值)的缩写
var是variable(变量)的缩写
val的存在是为了解决Java中final关键字没有被合理引用的问题
使用技巧:永远优先使用val来声明一个变量,当val没有办法满足需求时再使用var。这样设计出来的程序会更加健壮,也更加符合高质量的编码规范

三.函数

着重注意当函数中只有一行代码时可以直接用 = 表达返回值的意思

import kotlin.math.max

fun largerNumber(a: Int, b: Int): Int{
    return max(a,b)
}
//由于只有一行代码,所以可以写为
fun largerNumber1(a: Int, b: Int): Int = max(a,b)
//使用类型推导机制,还可以简化为
fun largerNumber2(a: Int, b: Int) = max(a,b)

fun main(){
    largerNumber(3,4)
}

四.程序的逻辑控制

①if语句

if语句基本和Java中的没什么区别,但是kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值

import kotlin.math.max

fun largerNumber(a: Int, b: Int): Int{
    return if(a > b){
        a
    }else{
        b
    }
}
//因为相当于只有一行代码,所以可以简化为
fun largerNumber1(a: Int,b: Int) = if(a > b) a else b

fun main(){
    largerNumber(3,4)
}

②when语句

kotlin中的when类似于Java中的switch,但又远比switch语句强大的多
首先,switch只能传入字符串整型或低于整形的变量作为条件,其他的就不行
其次,每一个case后还需要主动加上一个break,不仅容易忘记,而且显得代码比较冗杂
when不仅解决了上述痛点,还增加了许多新的特性

when的精确匹配

从这里可以看出when和if一样也是可以有返回值的

import kotlin.math.max

//这是利用if语句,不得不说,当判断条件很多的时候,就显得比较冗杂
fun getScore(name: String) = if(name == "Tom"){
    86
}else if(name == "Jim"){
    77
}else if (name == "Jack"){
    95
}else if (name == "Lily"){
    100
}else{
    0
}

//当判断条件非常多的时候,就应该考虑使用when语句
//匹配值 -> {执行逻辑},当执行逻辑只有一行代码时,{}可以省略
fun getScore1(name: String) = when(name){
    "Tom" -> 86
    "Jim" -> 77
    "Jack" -> 95
    "Lily" -> 100
    else -> 0
}
fun main(){
    
}

when的类型匹配

is是类型匹配的核心,相当于Java中的instanceof关键字

import kotlin.math.max

fun checkNumber(num: Number){
    when(num){
        is Int -> println("num is Int")
        is Double -> println("num is Double")
        else -> println("num not support")
    }
}
fun main(){

}

when的不带参数的用法

import kotlin.math.max

fun getScore1(name: String) = when{
    name == "Tom" -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}
//虽然显得比较冗杂,但是有某些情况必须要用这个
//比如
fun getScore(name: String) = when{
    name.startsWith("Tom")  -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}
fun main(){

}import kotlin.math.max

fun getScore1(name: String) = when{
    name == "Tom" -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}
//虽然显得比较冗杂,但是有某些情况必须要用这个
//比如所有名字以Tom开头的人,他的分数都是86分
fun getScore(name: String) = when{
    name.startsWith("Tom")  -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}
fun main(){

}

注意:kotlin中判断字符串和对象是否相等可以直接使用==关键字,而不是像Java那样调用equals()方法

③循环语句

(1)循环语句中while和Java基本没有任何区别
(2)for循环

import kotlin.math.max

fun main(){
    val range = 0..10//创建一个0到10的 闭 区间
    
    //升序
    //两端都是闭区间[0,10]
    for(i in 0..10){
        println(i)
    }
    //前闭后开[0,10)
    for(i in 0 until 10){
        println(i)
    }
    //跳过元素
    for(i in 0..10 step 2){
        // 0 2 4 6 8 10
    }
    
    //降序
    for(i in 10 downTo 0 ){
        //[10,0]
    }
}

你可能感兴趣的:(kotlin学习笔记)