美文网首页
第一行代码(第三版)学习笔记

第一行代码(第三版)学习笔记

作者: 实心棒棒糖 | 来源:发表于2020-04-17 16:01 被阅读0次

    序言

    感谢郭霖大佬为android开发者提供这么好的学习资料,此文章用来记录学习中点点滴滴。


    IMG_0203.jpg

    Kotlin语法学习

    1. val声明一个不可变的变量,var声明一个可变的变量,在不确定是用要val还是var的时候,先用val,后面有问题再改成var
    2. 函数中只有一行代码时,可以不必编写函数体,用=连接即可。有无返回值都可以这样写
    fun test() = print("HelloWorld")
    
    1. if语句可以带返回值,java里面是不可以。
    fun largeNumber(a:Int,b:Int)=if(a>b)a else b
    
    1. when语句类似于switch用法,这里有一个格式 匹配值 -> { 执行操作 }
    fun getSex(name: String) = when (name) {
        "小明" -> "男"
        "小红" -> "女"
        else -> "未知生物"
    }
    
    1. is相当于instanceof,判断字符串或者对象是否相等用==方法
    2. for循环更换成for-in循环
        val range = 0..10 //代表0到10的区间[0,10]
        val range2 = 0 until 10 //代表0到9的区间[0,10)
        val range3 = 10 downTo 0  //代表0到9的区间[0,10)
        val range4 = 1..10 step 2 //代表[1,3,5,7,9]
    
    1. kotlin中类默认是无法被继承的,需要在前面加一个open,继承用:
    2. 4种修饰符private public(默认)protected internal(同一模块可见)
    3. 数据类前面加上data,单例类 用object
    4. list,set,map 可以用mutableXof创建(X对应的类型),如果是Xof创建是不可变集合
    5. 空指针处理
    ?.判断非空执行   
    a?:b //这个表示如果a不为空则返回a,否则返回b
    !!.强制通过编译 不允许编译判断是否非空
    let.{
    }//判断不为空就执行括号里面的语句
    
    1. 字符串拼接 用$a
    val a="中国人"
    println("我是一名$a")
    
    1. 默认值
      fun defaultTest(a: String = "中国人", b: Int = 100) {
        print("${a}真牛逼${b} ")
    }
    //如果是a用默认值,b使用其他值可以这样写
        defaultTest(b = 10) //没有顺序的区分
    
    1. any和all函数 any判断至少有一个元素满足条件 all表示所有元素满足条件
    2. with函数,run函数,apply函数
    with函数
    val value = with(StringBuffer()) {
            appendln("健健康康")
            appendln("幸福美满")
            appendln("心想事成")
            toString()
        }
    run函数
    val value2 =StringBuffer().run {
            appendln("健健康康")
            appendln("幸福美满")
            appendln("心想事成")
            toString()
        }
    apply函数(返回自身)
    val value3 = StringBuffer().apply {
            appendln("健健康康")
            appendln("幸福美满")
            appendln("心想事成")
            toString()
        }
    
    1. 创建静态方法
    方法一、使用object创建单例类,但是里面所有方法都将变成类似静态方法调用方式
    方法二、使用companion object,但是其实并不是真正的静态方法,而是调用伴生类
    companion object {
    
      fun doSomething(){
      }
    }
    方法三、添加@JvmStatic注解
    方法四、使用顶层方法 Java调用的话是 类名+Kt
    
    1. lambda表达式中有一些入参没用到的,可以_代替
    2. lateinit延迟初始化
    //是否已经初始化
    if(!::a.isInitialized){
    }
    
    1. inner关键字修饰表示内部类
    2. 运算符重载
    class B(private val value: Int) {
        operator fun plus(b: Int) = value + b
    }
    //固定格式 operator修饰就plus代表+
    还有其他格式
    
    IMG_0222.jpg
    IMG_0223.jpg
    1. infix关键字简化函数
    infix fun String.abc(perfix:String)=startWith(prefix)
    

    Activity相关

    1. 跳转到其他activity用
    Intent(this,MainActivity::class.java)
    startActivity(intent)
    
    1. 获取当前Class对象用javaClass

    相关文章

      网友评论

          本文标题:第一行代码(第三版)学习笔记

          本文链接:https://www.haomeiwen.com/subject/kqjyvhtx.html