首先先对KotLin进行介绍:
KotLin是由JetBrains设计的开放源码的编程语言,它正在java开发者中变得越来越流行。KotLin通常被吹捧为Java的继承者,相比较Java而言,KotLin提供更为丰富的开发经验,因为它更现代,更具有表现力和更简洁。
如果你在寻求Android开发的可替代编程语言,那么应该试一下KotLin。使用KotLin,你可以很容易的在Android工程中替代Java或者与Java混合使用。
正文:
在KotLin,一切都是在这个意义上,我们可以调用成员函数和属性的任何变量对象。有些类型是内置的,因为它们的实现是优化的,但对用户看起来像普通的类。在本节中我们描述这些类型:数字、字符、布尔值和数组。
Numbers
KotLin处理数字的方式接近java,但又不完全相同。例如,不存在扩大转换为数字和文字在某些情况略有不同。KotLin提供以下内置类型代表数字(这是接近java)
注意,字符不是数字在KotLin。
字面常量
Long类型通过大写字母L来表示:123L
十六进制:0x0F
二进制:0b00001011
注意:八进制不支持
KotLin也支持传统类型的Float、Double类型:
默认情况是Double类型:123.5,123.5e10
Float类型通过f或者F表示:123.5f
例子:
val a: Int = 10000
print(a === a) //打印为true
val boxedA: Int? = a //?=意味着boxedA可以为空
val anotherBoxedA: Int? = a
System.out.println(boxedA === anotherBoxedA) //打印为false
val a: Int = 10000
print(a == a) // 打印true
val boxedA: Int? = a
val anotherBoxedA: Int? = a
print(boxedA == anotherBoxedA) // 打印true
“==”与“===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等,由上面可知boxedA和anotherBoxedA指向的是不同的对象
显示转化
注意:较小的类型不是更大类型的子类型
val a: Int? = 1
val b: Long? = a // 编译出错,Int类型
因此,较小的类型是不隐式转换为更大的类型。这意味着,我们不能没有明确指定一个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
val l = 1L + 3 // Long + Int => Long <span style="font-family: Arial, Helvetica, sans-serif;">//正确</span>
运算:
val x = (1 shl 2) and 0x000FF000
这里是按位运算的完整列表(只在Int和Long可用)
shl(bits)
– signed shift left (Java’s<<
)shr(bits)
– signed shift right (Java’s>>
)ushr(bits)
– unsigned shift right (Java’s>>>
)and(bits)
– 位与or(bits)
– 位或xor(bits)
– 位异或inv()
– 位取反
Characters
fun decimalDigitValue(c: Char): Int {
if (c !in '0'..'9')//c不再0到9字符范围内,则抛出异常
throw IllegalArgumentException("Out of range")
return c.toInt() - '0'.toInt() // 显示转化为数字
}
注意:像数字、字符如果使用了需要可以为空的表达式则不能调用方法
Booleans
这个Boolean类型只有两个属性:true和false
Arrays
生成数组两种方法:
val arr = Array(5,{i->(i)})//第一种
val arr1 = arrayOf(1,2,3)//第二种
KotLin也有专门的类来表示原始类型数组没有额外开销:
ByteArray
,
ShortArray
,
IntArray等等
Strings
val str : String = "Andly"
for (c in str) { //循环对str字符串遍历
System.out.println(c)
}
字符串模板
字符串中也可以有表达式,只需要在表达式前面加上$
val s = "abc"
val str = "$s.length is ${s.length}" // evaluates to "abc.length is 3"
${'$'}9.99 //打印之后是:$9.99