美文网首页
从java到Kotlin学习笔记-基本类型

从java到Kotlin学习笔记-基本类型

作者: CZKGO | 来源:发表于2020-03-15 19:25 被阅读0次

    基本类型

    关于基本类型,在Kotlin 中,所有东西都是对象,就可以这样干:

    666.toString()
    

    一些类型可以有特殊的内部表示——例如,数字、字符以及布尔值可以在运行时表示为原生类型值,是否装箱根据场合,有点类似于Java中数值类型和其包装类型的合体。

    关于Java的装箱参见 Java的自动装箱(Autoboxing)和拆箱(unboxing)

    (666都可以直接调用方法了,那可真是666,但除了下面👇的显形式转换,好像也没想到别的用途)

    类型转换

    • Kotlin 中的数字没有隐式拓宽转换
              较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。 这意味着在不进行显式转换的情况下我们不能把 Byte 型值赋给一个 Int 变量,需要toInt()方法,其他类型转换类似。
      (隐式拓宽转换还蛮方便的,嗯不理解为什么去掉的看这里Why doesn't Kotlin perform automatic type-casting?)
    • 显示转换
      上面说过,基本类型也都是对象,所以类型转换时直接调用相应方法即可
      toByte(): Byte
      toShort(): Short
      toInt(): Int
      toLong(): Long
      toFloat(): Float
      toDouble(): Double
      toChar(): Char

    字面常量

    • Kotlin不支持八进制的字面常量
      (好像也很少见到八进制的数,16进制到时很常见,以0开始比以0x开始到底还是会让人迷惑)

    比较

    • Kotlin中三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小

    字符类型

    • Kotlin字符用 Char 类型表示。它们不能直接当作数字, 不能直接和数字操作
      (👍Java中char和数字直接操作也是令人迷惑)

    字符串

    • Kotlin字符串的元素——字符可以使用索引运算符访问: s[i]
      (字符串本身就是个char数组,可以用索引直接访问👍)
    • Kotlin可以用 for 循环迭代字符串
    for (c in str) {
        println(c)
    }
    

    (既然是数组了,那么可以直接迭代也就不稀奇了👍)

    • Kotlin支持三个引号 """ ,保持字符串原有格式
    val text = """
        for (c in "foo")
            print(c)
    """
    

            可以通过 trimMargin() 方法来删除多余的空白。

    val text = """
        |Tell me and I forget.
        |Teach me and I remember.
        |Involve me and I learn.
        |(Benjamin Franklin)
        """.trimMargin()
    

            默认 | 用作删除空格的边界前缀,但你可以选择其他字符并作为参数传入,比如 trimMargin(">")。
    (支持原有字符串格式,这点可太爱了,能省不少事👍)

    • Kotlin支持字符串模板
              模板表达式以美元符($)开头,由一个简单的名字或花括号括起来的任意表达式构成:
    val i = 10
    println("i = $i") // 输出“i = 10”
    
    val s = "abc"
    println("$s.length is ${s.length}") // 输出“abc.length is 3”
    

            三引号内的原始字符串内部支持也模板,但不支持反斜杠转义,所以美元符需要通过如下方式转义:

    val price = """
    ${'$'}9.99
    """
    //$9.99
    

    相关文章

      网友评论

          本文标题:从java到Kotlin学习笔记-基本类型

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