美文网首页Kotlin TutorialsAndroid开发Android技术知识
[Kotlin Tutorials 1] 给Java开发者看的K

[Kotlin Tutorials 1] 给Java开发者看的K

作者: 圣骑士wind | 来源:发表于2019-12-30 13:49 被阅读0次

    给Java开发者看的Kotlin基础

    Java开发者看完这篇基础(再加上后面一篇空安全相关)就可以开始上手写代码了.
    后面具体的点可以边用边学.

    本文收录于: https://github.com/mengdd/KotlinTutorials

    和Java的基本区别

    • 没有new关键字, 直接创建对象.
    • 没有;.
    • 类型分为Nullable(带?)和Non-Null.
    • 继承类和实现接口都用:.

    类型

    在Kotlin中支持的数据类型:
    Double, Float, Long, Int, Short, Byte.
    不再像Java一样支持小数到大数的默认转换, 所有的转换都要通过显式的方法, 比如toInt()方法.

    字符类型: Char, 不能像Java中一样直接当数字对待了.
    布尔类型: Boolean.

    以上类型在运行时都会被表示为JVM原生类型(除非是可空类型和泛型应用), 但是在代码中它们只有一种写法(不像Java中有int和Integer两种),
    在用户看来它们就是普通的类.

    所有的类型需要可空(nullable)类型时, 会被自动装箱.

    字符串类型: String: 字符串是不可变(immutable)类型, 可以用[]访问元素, 可以用$加入模板表达式(可以是变量也可以是用{}包含的表达式).

    方法声明

    方法声明格式:

    fun 方法名(参数): 返回值类型 {
        方法体
    }
    

    参数列表中变量名在前面, 变量类型在后面.

    比如:

    fun sum(a: Int, b: Int): Int {
        return a + b
    }
    

    方法体要是返回一个简单的表达式, 可以直接用=:

    fun sum(a: Int, b: Int) = a + b
    

    这种情况下由于返回值类型可以被推断出来, 所以也可以省略不写.

    返回值为空: Unit可以省略不写.

    当方法有body时, 除非返回值是Unit, 否则返回值类型是不能被省略的.

    方法可以有默认参数

    声明方法的时候, 可以用=给参数设置默认值.
    当调用方法时省略了该参数, 就会使用默认值.

    调用方法的时候可以指定参数的名字.

    fun reformat(str: String,
                 normalizeCase: Boolean = true,
                 upperCaseFirstLetter: Boolean = true,
                 divideByCamelHumps: Boolean = false,
                 wordSeparator: Char = ' ') {
    ...
    }
    

    调用的时候:

    reformat(str, wordSeparator = '_')
    

    文档: Functions

    变量声明

    变量声明有两个关键字: valvar.

    其中val只能被赋值一次, 相当于final.

    val a: Int = 1  // immediate assignment
    val b = 2   // `Int` type is inferred
    val c: Int  // Type required when no initializer is provided
    c = 3       // deferred assignment
    

    变量声明时如果初始化可以推断出类型, 则可以省略类型.

    流程控制

    if

    在kotlin中的if是一个表达式(expression), 即它可以返回值.

    它的分支可以是{}包围的block, 其中最后一个表达式就是对应分支的值.

    val max = if (a > b) {
        print("Choose a")
        a
    } else {
        print("Choose b")
        b
    }
    

    当if作为表达式被使用的时候, 它必须有else.

    Java中常用的三元运算符条件? 满足 : 不满足, 在Kotlin中是不存在的.

    Kotlin中的Elvis Operator是用来进行null判断然后选择处理的. (具体见下篇空安全文章介绍)

    when

    when是用来取代Java中的switch的.

    when (x) {
        1 -> print("x == 1")
        2 -> print("x == 2")
        else -> { // Note the block
            print("x is neither 1 nor 2")
        }
    }
    

    和if一样, when也是可以被用作expression(表达式)或statement. 作为表达式使用的时候, else是必须的(除非编译器可以推断所有的情况都已经被覆盖了).

    循环

    while, do...while, break, continue的用法都和Java一样.

    for的用法也类似, 只不过在Java中是:, 在Kotlin中变成了in.

    Kotlin有一些Range操作符: Ranges

    参考资料

    相关文章

      网友评论

        本文标题:[Kotlin Tutorials 1] 给Java开发者看的K

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