首先在文章首页附上中文文档,方便大家查阅。
Android主推的语言就是kotlin,学习Kotlin是安卓开发不可避免的。另外Koltin的功能也是非常强大。它不仅仅可以做Android开发,也可以做IOS开发、服务端开发、Web前端开发…
Kotlin可以进行全栈开发。
下面将开始Koltlin的正式学习,我们将与Java对比学习,进一步加深印象。
1. 常量与变量
在koltlin里面:
- 运行时常量(或者说:只读的变量)使用
val
修饰,可读不可改 - 变量使用
var
修饰,可读可改
fun main() {
var name: String = "Kotlin"
name = "Java"
println(name)
}
可以看到声明的结构为:声明是否可改
名字
类型
赋值
在Kotlin中存在类型推导
fun main() {
var name = "Kotlin"
name = "Java"
println(name)
}
也就是我们的String类型的注明是可以省略的,Kotlin的编译器会根据我们的赋值自动的推导常量的类型。非常nice
2.基本类型
- 整型:
Byte: | 内存中占8位,表数范围-128-127,兼容java的byte和Byte类型。 |
---|---|
Short: | 内存中占16位,表数范围-32768~32767,兼容java的short和Short类型。 |
Int: | 内存中占32位,表数范围-2的31次方~2的31次方-1,兼容java的int和Integer类型。 |
Long: | 内存中占32位,表数范围-2的63次方~2的63次方-1,兼容java的long和Long类型。 |
所有未超出 Int
最大值的整型值初始化的变量都会推断为 Int
类型。如果初始值超过了其最大值,那么推断为 Long
类型。 如需显式指定 Long
型值,请在该值后追加 L
后缀。
- 浮点型:
Float: | 32位浮点型,当精度要求不高时可以使用此种类型。 |
---|---|
Double : | 64位双精度浮点型,当程序要求存储很大或者高精度的浮点数时使用这种类型 |
对于以小数初始化的变量,编译器会推断为 Double
类型。 如需将一个值显式指定为 Float
类型,请添加 f
或 F
后缀。 如果这样的值包含多于 6~7 位十进制数,那么会将其舍入
在Kotlin中数字没有隐式拓宽转换,具有
Double
参数的函数只能对Double
值调用,而不能对Float
、Int
或者其他数字值调用。如需将数值转换为不同的类型,请使用显示转换
fun main() {
fun printDouble(d: Double) { print(d) }
val i = 1
val d = 1.1
val f = 1.1f
printDouble(d)
// printDouble(i) // 错误:类型不匹配
// printDouble(f) // 错误:类型不匹配
}
这是与Java不同的地方,在java中,我们是可以将byte类型的数字自动转换成int类型。但是在Kotlin中,编译器不会帮我们进行这样的操作。我们需要自己手动转换。例如:
val b: Byte = 1 // OK, 字面值是静态检测的
val i: Int = b // 错误
显示转换:
val b:Byte=11
val a:Int=b.toInt()
println(a)
每个数字类型支持如下的转换:
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
- 字符型
通常表示单个字符,字符型值必须使用单引号括起来,kotlin使用16位的unicode字符集作为编码方式,因此kotlin程序支持各种语言的字符。
有如下三种表示形式:
- 通过单个字符来指定字符型值,如’A’,‘9’;
- 通过转义字符表示特殊字符值,如‘\n’.
- 直接使用Unicode,格式是‘\uxxxx’。
与java不同的是,kotlin的char型变量不能当成整数值使用,char就是简简单单的字符型。
- Boolean 类型
Boolean类型变量不能接受null值,Booean?类型的变量才能接受,Boolean类型将直接映射为java的boolean,但是Boolean?类型将会映射boolean的包装类Boolean.
注意:
在Kotlin里面没有int,float…,,就是没有java中的内置数据类型。它全部都是引用数据类型,相当于Java中的包装类。
但是这样并不会影响我们代码的运行效率,因为编译器会帮助我们将引用类型按情况转化成java中的内置数据类型。
准确的说,kotlin代码和java代码一样会编译成字节码文件,在字节码文件里,这些引用类型的性质和你直接在java文件里使用内置数据类型的效果一致的。