@RitcheeQinG
2020-03-23T08:51:22.000000Z
字数 1597
阅读 391
Android
共8种,可以根据是否支持null来区分
不支持null:
Byte, Short, Int, Long
支持null:
Byte?, Short?, Int?, Long?
它们继承自Number类,全都是引用类型
不指定且初始值为整数时默认为Int,可以认为Int对应java的int,Int?对应Java的Integer
进制表达
整数即十进制
二进制:0b
十六进制:0x
不支持八进制
Float, Double
只有浮点型可以使用科学计数法
且浮点型可以 /0.0,会得到正无穷大
但是 /0 则会报错
不能直接被当作整型使用
有三种表达方式
1. 'A' 直接字符
2. '\n' 转义符
3. '\uXXXX' Unicode
Kotlin中不存在隐式转换,必须显式转换
所有的类型都提供了toXXX()的方法(比如toInt())
但是Kotlin在表达式中可以自动转换
比如:
var bookPrice : Byte = 79var itemPrice : Short = 120var total = bookPrice + itemPrice // 1val tot = bookPrice.toLong() + itemPrice.toByte() // 2
在上面的表达式1里,后面两个变量都被自动转换成为了Int
2中,则都被自动转换成了Long
浮点数和整数之间的转换:
Double/Float被强制转换为整型时,小数部分会被直接截断
表达式中的结果则按当前最高等级来算
操作数的等级:
Byte -> Short -> Int -> Long -> Float -> Double
Boolean和Boolean?
Boolean类型是可以直接作为if等表达式的参数的,但是Boolean?类型不行,因为Boolean?类型的值可以是null
带?的都是可空类型,使用时有几种方式
var b : Boolean? = nullvar len1 = if (b != null) b.length else -1var len2 = b?.length ?: -1
其中上下两个表达式含义相同,?:是判空的简单写法,不为空用左边,为空用右边
分为两种:
转义字符串:可以包含转义符,和Java的String类似
原始字符串:可以包含换行和任意文本
fun main(args : Array<String>) {var str = "abc.and" // 转义字符串val txt = """|天上白玉京|十二楼五城|仙人抚我顶|结发受长生""".trimMargin()// 原始字符串,需要用三个双引号}
trimMargin()代表去掉边界符号|左边的内容(一般是为了去掉缩进)
字符串模板
Kotlin的字符串中可以有变量或者表达式
var bookPrice = 79var s = "book的price是:${bookPrice}"val myStr = "ritcheeQinG.com"println("${myStr}这个字符串的长度是${myStr.length}")
相比Java可能是省去了分开计算再挨个拼起来的过程
原始字符串中一样可以这么写
类型别名
类似C里面的typedef,Kotlin可以为已有的类型指定一个新的名字
用typealias关键字,通过这种方式泛型可以直接被省略掉,方便编写
.kt作为结尾main(),但Kotlin并非严格的面向对象语言,main方法也不需要定义在一个类当中;new关键字,直接类名()即可