1、基本数值类型
类型 | 位宽度 |
---|---|
Byte | 8 |
Short | 16 |
Int | 32 |
Long | 64 |
Float | 32 |
Double | 64 |
注:不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。
字面常量
十进制 | 123 |
---|---|
长整型 | 123L |
2进制 | 0b00011011 |
8进制 | 不支持 |
16进制 | 0xAB |
Float | 123.4f 或 123.4F |
Double | 123.4 或 123.4e10 |
注:可以使用下划线使数字常量更易读
val a = 123_456_789
val b = 987_654_321L
val c = 0b1101_0010_1111_0001
val d = 0xAB_CD_E5
2、数据操作
1)比较大小
Kotlin 中没有基础数据类型,只有封装的数字类型。
你每定义的一个变量,其实 Kotlin 帮你封装了一个对象,这样可以保证不会出现空指针。
数字类型也一样,所以在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别了。
== | 比较值大小 |
---|---|
=== | 比较对象地址 |
/**
* 比较大小
*/
fun compare() {
val x: Int = 1001
println("x == x : ${x == x}") //true
println("x === x : ${x === x}") //true
val y1: Int? = x
val y2: Int? = x
println("y1 == y2 : ${y1 == y2}") //true
println("y1 === y2 : ${y1 === y2}") //true
}
2)类型转换
每种数据类型都有下面的这些方法,可以转化为其它的类型:
- toByte(): Byte
- toShort(): Short
- toInt(): Int
- toLong(): Long
- toFloat(): Float
- toDouble(): Double
- toChar(): Char
例:
fun typeChange() {
val b: Byte = 0b1101
val i: Int = b.toInt()
println("$i") //输出13
}
注:有些情况下也是可以使用自动类型转化的
val l = 3L + 1 // Long + Int -> Long
3、字符串
1)字符
和 Java 不一样,Kotlin 中的 Char 不能直接和数字操作。
- 字符字面值用单引号括起来: ‘1’
- 特殊字符可以用反斜杠转义。 支持这几个转义序列:\t、 \b、\n、\r、’、"、\ 和 $
- 编码其他字符要用 Unicode 转义序列语法:’\uFF00’
//Java
public void check(char c) {
if (c < 65 || c > 90) {
System.out.println("This character is not in A...Z");
}
}
//Kotlin
fun check(c: Char) {
if (c !in 'A'..'Z') {
println("This character is not in A...Z")
}
}
2)字符串
fun stringFun() {
//字符串
val str1: String = "test"
for (c in str1) Log.i(TAG, "$c")
//多行字符串
val str2: String = """
1、多行字符串
2、多行字符串
3、多行字符串
"""
Log.i(TAG, str2)
// trimMargin() 删除多余的空白
//默认 | 用作边界前缀,但你可以选择其他字符并作为参数传入,比如 trimMargin(">")
val str3: String = """
|4、多行字符串
|5、多行字符串
|6、多行字符串
""".trimMargin()
Log.i(TAG, str3)
}
输出
3)字符串模板
fun stringMould() {
val i = 10
val str1 = "i = $i"
println(str1) //输出 i = 10
val str = "killer"
val str2 = "$str has ${str.length} character"
println(str2) //输出 killer has 6 character
val str3 = "The price is ${'$'}6.99"
println(str3) //输出 The price is $6.99
}
4、数组
数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法。
由于使用 [] 重载了 get 和 set 方法,故可通过下标获取或者设置数组对应位置的值。
除了类Array,还有ByteArray, ShortArray, IntArray,其用法同Array一样。
数组的创建两种方式:
- 使用函数arrayOf()
- 使用工厂函数
fun arrayFun() {
val arrayA = arrayOf(1, 2, 3, 4, 5)
val arrayB = Array(5) { i -> (i * 3) }
Log.i(TAG, "--- a ---")
for (a in arrayA) Log.i(TAG, "$a")
Log.i(TAG, "--- b ---")
for (b in arrayB) Log.i(TAG, "$b")
val intArray: IntArray = intArrayOf(6, 7, 8, 9, 10)
Log.i(TAG, "--- intArray ---")
for (c in arrayB) Log.i(TAG, "$c")
}
输出