美文网首页
从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