基本类型
关于基本类型,在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
网友评论