基本数据类型
基本数据类型包括数字、字符、布尔值、数组与字符串
一:数字
kotlin提供的数字类型与Java很接近,但是kotlin对数字没有隐式转换(eg:int可隐式转换为long),
其中某些字面值也有所不同
kotlin内置的数字类型如下
type | bit width |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
Int | 32 |
Short | 16 |
Byte | 8 |
这里Int相当于Java中的int.
1.1:使用
//常用数字的字面量
var a: Int = 1
var l : Long = 123L //使用L后缀标记
var f: Float = 123.5f //使用f后缀标记
var d = 12.4 //默认为Double
注意:kotlin中可以使用下划线使你的数字字面量更易读
var l: Long = 1_000_000L //这个和1000000L是一样的
1.2:显示转换
Java中数字较小类型可以隐式转换为较大的类型,但kotlin由于表达方式的不同无法实现隐式转换,kotlin
为我们提供了显示转换。每个数字类型支持以下转换
- toInt(): Int
- toByte() : Byte
- toDouble() : Double
- toFloat() : Float
- toShort(): Short
- toLong(): Long
- toChar(): Char
注意:缺乏隐式转换也很少使用,kotlin为我们提供了很好的上下文推断
val a = 1L + 1 //a上下文推断为Long类型 Long+Int ->Long
1.3:运算
1.3.1:相等
相等性检测 a==b a!=b, 与Java一样
1.3.2:比较操作
< , >, <= , >= 操作符与Java一致
1.3.3:区间判断
x in a..b
x !in a..b
1.3.4:位操作
位运算只用与Int和Long
操作符 | 作用 |
---|---|
shl | 有符号左移,相当于Java中的<< |
shr | 有符号右移 ,相当于Java中的>> |
ushr | 无符号右移,相当于Java中的 >>> |
and | 位与 |
or | 位或 |
xor | 位异或 |
inv | 位非 |
val x = (1 shl 2) and 0x000FF000
二:字符
字符为Char类型,用单引号声明
val a: Char = 'a'
注意:特殊字符需要转义,这与Java一样
三:布尔
布尔用Boolean表示,有true false, 若需要可空引用布尔会被装箱
1.1:布尔运算
操作符 | 作用 |
---|---|
逻辑或 | |
&& | 逻辑与 |
! | 逻辑非 |
四:数组
在kotlin中使用Array类表示,它定义了get,set函数,以及size属性。
我们可以使用库函数arrayOf()或者arrayOfNulls()来创建数组,
var a = arrayOf(1,2,3) //创建一个数组
var b = arrayOfNulls(1,2,3) //创建一个非空数组,所有元素非空
val asc = Array(5) { i -> (i*i).toString() }
asc.forEach{ pringln(it) }
注意:与Java不同kotlin中数组里的类型是不可变的,
kotlin中有无装箱操作的专门的原生类型数组,使用ByteArray、 ShortArray、IntArray等生成。
五:字符串
字符串使用String类型表示,字符串是不可变的,字符串可以使用[]索引访问。
var a: String = "abc"
for (x in a){ println(x) }
可以使用+连接字符串,这里与Java一致。
1.1:字面量
kotlin字符串面值分为转义字符串和原始字符串。
- 转义字符串里可以包含转义字符,使用双引号括起来,和Java字符串类似。
- 原始字符串使用三引号""",内部没有转义,并包括换行以及其他字符
val s = "tian\n"
val s = """
for (c in s) {
println(c)
}""" //这里输出s,就会把字符原始输出
1.2:字符串模板
字符串可以包含模板表达式,即一小段代码,模板以$符号开头。
val i = 10
println("i = $i") //$后跟一变量,输出就代替为变量的值, i=10
println("i = ${ i * i}") //$后跟一模板表达式,需要使用{}括起来
网友评论