学习文档:
http://www.kotlindoc.cn/
Kotlin处理数值的方法与java类似,但是不存在隐式转换数值的精度,并且在字面上有一些小小的不同
1.数值类型
类型 | 字宽 |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
int | 32 |
Short | 16 |
Byte | 8 |
注:
字符在Kotlin中不是数值类型
2. 字面值常量
常见:
数型: 123
长整型: 123L
16进制: 0x0f
二进制: 0b00110101
Kotlin也支持传统的浮点数表示:
Doubles: 123.1
Floats: 123.1f
注:
不支持8进制
3.表示
在java平台上,数值被jJVM虚拟机以字节码的方式物理存储,除非我们需要做客空标识(比如:Int?)或者涉及泛型。在后者中数值是装箱
注:
装箱过的数值是不保留特征的
//==数值的比较
//===内存地址的比较 Intrinsics.areEqual(b, c)
val a: Int = 1000;
println(a === a)//true
val b:Int? =a
val c:Int? =a//装箱
println(b === c)//fals
val i:Int? = 1000;//赋值时自动包装成integer对象
val j:Int? = i;
val k:Int? = i;
println(j===k);//true 所以 j k比较时 地址和数值都是一样的
//无法通过编译
// val a1:Int? = 1
// val b1:Long? = a1//报错原因:类型不同
4.显式转换
由于不同的表示,短类型不是长类型的子类型。
每个数值类型都有支出下面转化的方法
类型 | 方法 |
---|---|
Byte | toByte() |
Short | toShort() |
Int | toInt() |
Long | toLong() |
Float | toFloat() |
Double | toDouble() |
char | toChar() |
val a1:Int? = 100;
val b1:Long? = a1?.toLong();//进行非空判断
println(b1);//100
5.运算符
注:
运算操作符只可以在Int和Long类型
方法 | 含义 |
---|---|
shl(bits) | 带符号左移(相当于java’s <<) |
shr(bits) | 带符号右移(相当于Java’s >>) |
ushr(bits) | 无符号右移(相当于Java’s >>>) |
and(bits) | 按位与 |
or(bits) | 按位或 |
xor(bits) | 按位异或 |
inv(bits) | 按位翻转 |
6.字符
字符型用Char表示。不能直接当做数值
字符是由单引号包裹'',特殊的字符通过反斜杠\转义
7.布尔型
布尔值只有true或者false
运算操作
||
&&
8.Array
Arrays在Kotlin中由Array类表示,有get和set方法(通过运算符重载可以由[]调用),以及size方法,以及一些常用的函数
class Array<T> private () {
fun size(): Int
fun get(index: Int): T
fun set(Index: Int, value: T): Unit
fun iterator(): Iterator<T>
//...
}
arrayOf() 传递每一项的值来创建Array
arrayOf(1, 2, 3) 创建了一个[1, 2, 3]
arrayOfNulls() 创建一个指定大小的空Array
//Array的两种创建方式
val intArr:IntArray = intArrayOf(1,2,3)
intArr[0] = intArr[1] + intArr[2];
println("intArr第一个值:"+intArr[0])
val strArr = Array(5,{i->(2*2).toString()})
println("strArr第一个值:"+strArr[1])
9.字符串
字符串是由String表示的,字符串的元素不变的。
字符串的元素可以通过索引操作读取:s[i]。
字符串可以用for循环迭代
for(c in str){
println(c)
}
Kotlin有两种类型的string:
1.带分隔符
val s = "Hello World!\n"
2.包涵新行以及任意文本得
val text = """
for(c in "foo)
println(c)
"""
10.模板
字符串可以包含模板表达式。
一个模板表达式由一个$开始并包含另一个简答的名称:
val i = 10
val s = "i = $i"
一个带大括号的表达式:
val s = "abc"