Kotlin学习2----数据类型
基本数据类型
Java有两种数据类型:引用类型与基本数据类型。
Kotlin只提供引用类型这一种数据类型,出于更高性能的需要,Kotlin编译器会在Java字节码中改用基本数据类型。
在学习Kotlin的时候可以喝java对比着学习,在java中有基本数据类型(byte,short,int long float,double,boolean)和引用数据类型,在Kotlin中也有整数数据类型(Byte,Short ,Int,Long),浮点型数据类型(Float,Double),Char,Boolean,字符串类型,数组类型
比较值的大小
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。(==相当于java中的equal)
// TODO 比较两个值
fun main() {
val name1: String = "张三"
val name2: String = "张三"
// --- 比较值本身
// == 等价 Java的equals
println(name1.equals(name2))
println(name1 == name2) //kotlin推荐这种写法
// --- 比较对象地址
val test1:Int? = 10000
val test2:Int? = 10000
println(test1 === test2) // false
}
类型转换
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
数组
数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以我们可以通过下标很方便的获取或者设置数组对应位置的值
fun main() {
// 第一种形式
val numbers = arrayOf(1, 2, 3, 4, 5, 6, 7, 8)
println(numbers[0]) //输出1
println(numbers[7]) //输出8
for (number in numbers) {
println(number) // 输出1 2 3 4 5 6 7 8
}
// 第二种形式 value=0 长度为10,然后根据value+200循环赋值
val numbers2 = Array(10, {value: Int -> (value + 200) })
for (value in numbers2) {
println(value) //输出200 201 202 203 204 205 206 207 208 209
}
}
注意:
-
[] 运算符代表调用成员函数 get() 和 set()。数组是不可变的
-
除了类Array,还有ByteArray, ShortArray, IntArray,用来表示各个类型的数组,省去了装箱操作,因此效率更高,其用法同Array一样:
val x: IntArray = intArrayOf(1, 2, 3) x[0] = x[1] + x[2] println(x[0]) //输出5
字符串
和 Java 一样,String 是不可变的。方括号 [] 语法可以很方便的获取字符串中的某个字符,也可以通过 for 循环来遍历:
val str:String = "Hello Word"
println(str[0]) //输出H(一个字符)
for (c in str) { // 可以用 for 循环迭代字符串
println(c) //输出 H e l l o W o r d(所有字符)
}
-
字符串可以用+进行拼接
-
Kotlin 支持三个引号 “”" 扩起来的字符串,支持多行字符串
fun main(args: Array<String>) { val text = """ 多行字符串 多行字符串 """.trimMargin() println(text) // 输出有一些前置空格 }
-
String 可以通过 trimMargin() 方法来删除多余的空白。
字符串模板表达式
字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头,由一个简单的名字构成:
fun main(args: Array<String>) { val a = 3 val s = "a = $a" // 求值结果为 "a = 3" println(s) }
或者用花括号扩起来的任意表达式:
fun main(args: Array<String>) {
val s = "runoob"
val str = "$s.length is ${s.length}" // 求值结果为 "runoob.length is 6"
println(str)
}