一、基本类型
(1)数值类型
包含byte、short、int、long、float 、double等,
不包含char,char是一个独立的数据类型。
不能隐式将较小的类型转换为较大的类型。
(2)字符
和 Java 不一样,Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号'包含起来的。
(3)布尔
包含true 和false。
(4)数组
val arrayOfInt: IntArray = intArrayOf(1, 2, 3, 4, 5)
val arrayOfChat: CharArray = charArrayOf('a', 'b')
val arrayOfString: Array<String> = arrayOf("我", "是", "flexible")
fun main(args: Array<String>) {
println(arrayOfInt.size)
for (i in arrayOfChat) {
print(i)
}
println(arrayOfInt[0])
println(arrayOfChat.joinToString(""))
println(arrayOfInt.slice(0..3))
}
(5)字符串
和java一样 ,不可变。
可使用
""" ,支持多行字符串,通过trimMargin()去除空格
val rawString:String ="""
$int1
$ int1
""".trimMargin()
字符串可以包含模板表达式,以美元符号($)开头,后可接名字,也可接花括号
括起来的表达式。
==相当于java中的equal,===相当于java中的==
二、空指针安全机制
kotlin通过在类型后加?来表示变量是否可以为空(String? Int?),在有非空限制的地方,
编译器无法通过,通过!!来表示该变量确定不为空。getName()?:return 表示如果
getName()为空,直接return。
kotlin通过种种限制基本避免了因为空指针错误而导致的奔溃。
fun main(args: Array<String>) {
val name:String?= getName()
println(name?.length)
// val name:String= getName()?:return
// println(name)
// val value:String?="hello world"
// println(value!!.length)
}
如果只有一个构造函数,可直接写在类名后。
open class person (character:String, looks:String , voice:String){
init {
println("new 了一个 ${this.javaClass.simpleName} ta性格$character 长相$looks 声音$voice")
}
}
class men(character:String, looks:String , voice:String):person(character,looks,voice)
fun main(args: Array<String>) {
val men= men("懵","帅","糯")
}
四、Range
..表示为闭区间,until表示右开区间,emlyRange为空区间。
val range :IntRange =0..1024
val unCloseRange: IntRange =0 until 1024
val emplyRange:IntRange =0..-1
fun main(args: Array<String>) {
println(3 in unCloseRange)
for (i in range) {
println("$i,")
}
}
可以使用as?进行安全的类型转换。如果转型不成功,它
会返回null。
open class Parent {}
class Child : Parent() {
fun getName(): String {
return "xd"
}
}
fun main(args: Array<String>) {
val p: Parent = Child()
if (p is Child) {
println(p.getName())
}
val p1:Parent = Parent()
val child:Child?=p1 as? Child
println(child ) //结果为null
}