Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型。
比较两个数字
Kotlin 中没有基础数据类型,只有封装的数字类型,你每定义的一个变量,其实 Kotlin 帮你封装了一个对象,这样可以保证不会出现空指针。数字类型也一样,所有在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别了。
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。
fun main(args:Array<String>){
val a:Int = 10000
print(a===a)//返回true,值相等,对象地址相等
//经过了装箱,创建了两个不同的对象
val boxedA :Int?=a
val anotherBoxedA:Int?=a
println(boxedA === anotherBoxedA) // false,值相等,对象地址不一样
println(boxedA == anotherBoxedA) // true,值相等
}
类型转化
由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。 这意味着在不进行显式转换的情况下我们不能把 Byte 型值赋给一个 Int 变量。
错误例子
val b: Byte = 1
val i: Int = b
正确例子
val b: Byte = 1
val i: Int = b.toInt()
每种数据类型都有下面的这些方法,可以转化为其它的类型:
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
数组
数组用类 Array 实现,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以可以通过下标很方便的获取或者设置数组对应位置的值。
数组的创建两种方式:一种是使用函数arrayOf();另外一种是使用工厂函数。
fun main(args:Array<String>){
val a=arrayof(1,2,3)
val b=Array(3,{i-> (i * 2) })
//读取数组内容
println(a[0]) // 输出结果:1
println(b[1]) // 输出结果:2
}
字符串
和 Java 一样,String 是可不变的。方括号 [] 语法可以很方便的获取字符串中的某个字符,也可以通过 for 循环来遍历:
for(c in str){
print(c)
}
kotlin支持三个引号“”“扩起来的字符串,支持多行字符串
fun main(args:Array<String>){
val text="""
多行字符串
多行字符串
"""
print(text)
}
String可以通过trimMargin()方法来删除多余的空白
fun main(args:Array<String>){
val text="""
多行字符串
多行字符串
""".trimMargin()
print(text)
}
字符串模板
字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头,由一个简单的名字构成:
fun main(args:Array<String>){
val i=10
val s="i=$i"//求值结果为i=10
print(s)
}
或者用花括号扩起来的任意表达式
fun main(args:Array<String>){
fun main(args: Array<String>) {
val s = "runoob"
val str = "$s.length is ${s.length}" // 求值结果为 "runoob.length is 6"
println(str)
}
}